C语言零零碎碎知识点(1)

1.如何计算各位数字之和

   char n[101];
	int sum = 0;
	int i = 0;
	//计算各位数字之和
	while (n[i] != 0) {
    
    
		**int num = n[i] - '0';//将字符转换为数字**
		sum += num;
		i++;
	}

2.字符串的复制 strcpy()函数

 头文件:#include <string.h>
 
 例子:
#include <stdio.h>
#include <string.h>

int main ()
{
    
    
    char str1[]="Sample string";
    char str2[40];
    char str3[40];
    strcpy (str2,str1);
    strcpy (str3,"copy successful");
    printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
    return 0;
}

输出结果:
str1: Sample string
str2: Sample string
str3: copy successful

3.函数参数表中的数组,其实是指针

如:

** int sum(int a[],int n) = int sum(int *a,int n) **

又数组变量本身表达地址 (a==&a[0])
,所以

*int a[10];int p=a;
//就不用&取址符

但是如果是数组的单个变量,就需要&了.

4.scanf()的返回值

例如:
scanf(“%d%d“,&a,&b)
当a b都有输入,则会返回2;

scanf ("%d%d",&a,&b)==2;

当只输入了一个,则会返回1;

scanf ("%d%d",&a,&b)==1;

当都没输入,则会返回0。

scanf ("%d%d",&a,&b)==0;

所以可以将以上等式作为条件,边输入边判断。如以下PAT例题:

PAT例题

#include<stdio.h>
int main(){
    
    
    int a,b;
    //分离出第一项,是较好的安排空格
    if(scanf("%d %d",&a,&b)==2){
    
    
        if(b==0){
    
    //因为是指数递降的方式输入,如果第一项指数是0,那就为零多项式。
            printf("0 0");
        }
         else{
    
    
            printf("%d %d",a*b,b-1);
        }
    }
    while(scanf("%d %d",&a,&b)==2){
    
    
        if(b==0){
    
    
            return 0;
        }
        else{
    
    
            printf(" %d %d",a*b,b-1);
        }
       
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_52340203/article/details/114260367