文章

1

粉丝

0

获赞

0

访问

20449

头像
C语言常用代码合集
经验总结
发布于2021年1月26日 17:23
阅读数 20449

本博客是本人自己整理在刷题时候遇到的有用的或者有趣的代码,从2021.1.26开始整理,时间跨度较长,水平有限,还请见谅。

目录

  1. 求一段数字的长度。
  2. 统计整数中指定数字的个数。
  3. 求形如“aaaa……aaa”(n个a)的数字。
  4. 输入一个以#结束的非空字符串。
  5. int main(void) 和int main() 的区别。
  6. 头文件和函数。
  7. ?的用法。
  8. switch语句的用法。
  9. 简单计算器。
  10.  

 


一、求一段数字的长度。

    int n,m=0;	
    while(n){
		n/=10;
		m++;
	}

几点说明:

1.while(n)

1.1.n是bool型变bai量时,就是代表n为true时运行循环(bool表示布尔型变量,也就是逻辑型变量的定义符,以英国数学家、布尔代数的奠基人乔治·布尔(George Boole)命      名。bool类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。在objective-c中提供了相似的类型BOOL,它具有YES值和NO值;在java中则对应于boolean类型。)

1.2.n是int型时,就是代表n为1时运行循环
1.3.n为表达式,就代表表达式成立时运行循环

2.n/=10

每次去掉最后一位,可以加上 i=n%10;来实现对每一位数字的提取。

3.m++

举例,当n为9时,m++变为1。


二、统计整数中各个数字。

int reverse( int number ){  
    int x;   
    while(number>0){  
        x = number%10;  
        number/=10;  
    }  
    return XXX;  
} 

几点说明:

1.remainder=number%10

remainder记录的是number的最后一位数,由于每次都要实现记录末位数,所以要通过 number=number/10; 语句实现number的重新定义。让number除以10即可。但在之后若要再利用number,则麻烦。

2.while(number>0)

大于0即可把每一位都取出来。

 


三、求形如“aaaa……aaa”(n个a)的数字。

int fn( int a, int n ){
    int b=1;
    for(int i=1;i<n;i++){
        b=10*b+1;
    }
    b*=a;
    return b;
}

几点说明:

1.利用10*b+1; 一直下去,也可以用1/9乘以n。


四、输入一个以#结束的非空字符串。

​​​​​​​int main()  
{       
    char a[800]; 
    int d,i;
    
    i=0;
    while((d=getchar())!='#'){
        a[i]=(char)d;
        i++;
    }
    a[i]='\0';
}

//如果是数字型,可以这样。
#include<stdio.h>

int main(){
    int i,a[100];
    do{
      scanf("%d",&a[i++]);
    }while((getchar())!='\n');  //空格来结束scanf的读入
}

几点说明:

1.char a[800];

利用char a[800]; 存放最开始的字符串。

2.while((d=getchar())!='#');

用while语句实现输入,每当d输入的不是#的时候,就将输入的符号存入数组a[800]中去。同时利用(char)进行字符强制转换。

3.i++

最后i++,并将最后一个a[i]赋值为'\0'.


五、int main(void) 和int main() 的区别

int main(void) 指的是此函数的参数为空,不能传入参数,如果你传入参数,就会出错。

int main() 表示可以传入参数。

// 这样是正确的
int main()
{
  if (0) main(42);
}

// 这样会出错
int main(void)
{
  if (0) main(42);
}

几点说明:

1.在 C++ 中 int main() 和 int main(void) 是等效的,但在 C 中让括号空着代表编译器对是否接受参数保持沉默。

2.在 C 语言中 main() 省略返回类型也就相当说明返回类型为 int 型,不过这种用法在 C++ 中逐渐被淘汰。虽然 void main()在很多系统都适用,但他毕竟不是标准的,所以应该避免这种用法, 应该使用这种 int main(void) 的写法比较妥当。


六、头文件和函数

#include <math.h>{
    sqrt(x)//给x开方
}

七、?的用法

//PTA练习3-3 统计学生平均成绩与及格人数

#include<stdio.h>
#include<math.h>
 
int main(void)
{
    int n;
    int score;
    int count=0;
    double sum=0.0;
    double ave;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&score);
        sum+=score;
        if(score>=60) count+=1;
    }
    ave = n!=0? sum/n : 0;
    printf("average = %.1lf\n",ave);
    printf("count = %d",count);
	return 0;
}

几点说明:

1.ave = n!=0? sum/n : 0;

带问号的语句判断正确,ave=sum/n;错误,ave=0。


八、switch语句

switch(a[j])
        {
            case 1:price=3;break;
            case 2:price=2.5;break;
            case 3:price=4.1;break;
            case 4:price=10.2;break;
            default:price=0.00;
        }

几点说明:

1.程序执行时,首先计算表达式的值,与case后面的常量表达式值比较,若相等就执行对应部分的语句块,执行完后利用break语句跳出switch分支语句。若表达式的值与所有的case后的常量表达式均不匹配,则执行default项对应的语句n,执行后跳出switch分支语句。

2.case后面的常量表达式只能是整型、字符型或枚举型常量的一种;各case语句表达式的值各不相同,只起到一个标号作用,用于引导程序找到对应入口。

3.这里的语句块可以是一条语句,或其它复合语句。语句块可以不用花括号“{}”。

4.各个case语句并不是程序执行的终点,通常需要执行break语句来跳出switch分支语句;若某case语句的语句块被执行后,若其后没有break语句,则顺序执行其它case语句,直到遇到break语句或后面所有case语句全部执行完,再跳出switch分支语句。

5.多个case可以共用一组执行语句块。

6.各个case和default出现的先后次序,并不影响执行结果。

7.default语句不是必须的,但建议加上作为默认情况处理项。

8.switch语句仅做相等性检测,不能像if语句那样做关系表达式或逻辑表达式计算,进行逻辑真假判断。


九、简单计算器


#include <stdio.h>
//四种运算符的优先级相同  题说 优先级相同 
int main()
{
    int y,x;
    char op;
    //没有空格,且至少有一个操作数。可以先读入一个数字;将前一个运算的结果当作Y
	int i=0;//判断是否出错 
	 
    scanf("%d",&y);
	while(op!='=') {
		op=getchar();
		if(op=='='){
			break;
		}
		scanf("%d",&x);
		if(op=='+'||op=='-'||op=='*'||op=='/'){
			if(op=='+'){
				y=y+x;
			}else if(op=='-'){
				y=y-x;
			}else if(op=='*'){
				y=y*x;
			}else if(op=='/'){
				if(x==0){
					printf("ERROR")	;
					i++;	
				}else{
					y=y/x;
				}	
			}	
		}else{
			printf("ERROR")	;
			i++;
		}
	}
	
	if(i==0){
		printf("%d",y);
	}
 
    return 0;
}

几点说明:

 


 



登录后发布评论

暂无评论,来抢沙发