C语言程序设计经典例题100道(四)
编写C语言程序,从键盘输入一个整数n,然后判断整数n是几位数,并输出到屏幕上。如果整数n小于1,则输出“非法数据”。
#include<stdio.h>
int main()
{int n;int counter=0;printf("请输入一个整数:");scanf("%d",&n);if(n<1){printf("非法数据");return 1;}printf("%d\n",n);while(n>=1){n/=10;counter++;}printf("n是%d位整数。",counter);return 0;
}
运行结果

编写C语言程序,从键盘输入一个整数n,如果整数n大于0,则输出n是整数以及绝对值是几位数;如果整数n小于0,则输出n是负整数以及绝对值是几位数;如果整数n等于0,则输出n是整数0.
#include<stdio.h>
int main()
{int n;int counter=0;printf("请输入一个整数:");scanf("%d",&n);printf("%d是",n);if(n>0){printf("正整数");}else if(n<0) {n=-n;printf("负整数"); }else{printf("整数零");return 0;}while(n>=1){n/=10;counter++;}printf(",其绝对值是%d位整数。",counter);return 0;
}
运行结果

编写C语言程序,从键盘输入一个整数n,然后输出n行符号“*”到屏幕中,每行符号的数量由1递增到n。如果整数n不满足条件“
",则输出”非法数据“。
#include<stdio.h>
int main()
{int n;int x,y;printf("请输入一个整数:");scanf("%d",&n);if((n<1)||(n>80)){printf("非法数据");return 1;}for(x=1;x<=n;x++){for(y=1;y<=x;y++){printf("*");}printf("\n");}return 0;
}
运行结果

编写C语言程序,从键盘输入一个整数n,然后输出n行符号”*“到屏幕中,每行符号的数量由1递增到2n-1.如果整数n不满足条件”
“,则输出”非法数据“。
#include<stdio.h>
int main()
{int n;int x,y;printf("请输入一个整数:");scanf("%d",&n);if((n<1)||(n>400)){printf("非法数据");return 1;}for(x=1;x<=n;x++){for(y=1;y<=(n-x);y++){printf(" ");}for(y=1;y<=(2*x-1);y++){printf("*");}printf("\n");}return 0;
}
运行结果

编写C语言程序,从键盘输入两个整数m和n(使用空格分隔),然后输出m和n之间的所有素数到屏幕中。每行显示5个素数,每列右对齐,并统计在区间[m,n]中素数的数量。如果整数m和n不满足条件”
“,则输出“非法数据”。
#include<stdio.h>
int main()
{int n,m,i,j;int is_prime;int counter=0;printf("请输入2个整数[m n]:");scanf("%d%D",&m,&n);if((m<2)||(m>n)){printf("非法数据");return 1;}for(i=m;i<=n;i++){is_prime=1;for(j=2;j<i;j++){if(i%j==0){is_prime=0;break;}}if (is_prime){printf("%12d",i);counter++;if (counter%5==0) {printf("\n");}}
}printf("\n区间[%d %d]的素数有%d个。\n",m,n,counter);return 0;
}
运行结果

编写C语言程序,从键盘输入一个整数n,然后统计整数n所对应的二进制数中”1“的数量,并输出到屏幕中。如果整数n小于1,则输出”非法数据“。
#include<stdio.h>
int main()
{int n;int counter=0;printf("请输入一个整数:");scanf("%d",&n);if(n<1){printf("非法数据");return 1;}printf("十进制整数%d",n);while(n>=1){if(n%2==1){counter++;}n/=2;}printf("对于的二进制数中有%d个'1'",counter);return 0;
}
运行结果

编写C语言程序,从键盘输入一个整数n,然后把n分解质因数,并输出到屏幕中。如果整数n小于2,则输出”非法数据“。
分解质因数:任何一个合数都可以写成若干个质数(素数)相乘的形式。例如:
2000=
2005=
#include<stdio.h>
int main()
{int n;int i=2;printf("请输入一个整数:");scanf("%d",&n);if(n<2){printf("非法数据");return 1;}printf("%d=",n);while(i<n){if(n%i==0){n/=i;if(n>1){printf("%dx",i);continue;}if(n==1){printf("%d\n",i);}}i++;}if(i>=n){printf("%d\n",n); }return 0;
}
运行结果

编写C语言程序,从键盘输入2个整数m和n(使用空格分隔),然后对m和n之间(包括m和n)的所有整数分解质因数,并输出到屏幕中。每行显示1个整数分解。如果整数m和n不满足条件”
“,则输出”非法数据“。
#include<stdio.h>
#include<math.h>
int main()
{int n,m,i,j,t;printf("请输入2个整数[m n]:");scanf("%d%d",&m,&n);if((m<2)||(m>n)){printf("非法数据");return 1;}for(j=m;j<=n;j++){t=j;i=2;printf("%d=",t);while(i<=sqrt(t)){if(t%i==0){t/=i;if(t>1){printf("%dx",i);continue;}if(t==1){printf("%d\n",i);}}i++;}if(i>sqrt(t)){printf("%d\n",t);continue;}}return 0;
}
运行结果

编写C语言程序,从键盘输入5个整数,然后以相反的顺序输出。
#include<stdio.h>
int main()
{int number[5];int i;printf("请输入5个整数:\n");for(i=0;i<5;i++){printf("第%d个整数:",i+1);scanf("%d",&number[i]); } printf("输出:\n");for(i=4;i>=0;i--){printf("第%d个整数:%d\n",i+1,number[i]);} return 0;
}
运行结果

编写C语言程序,从键盘输入10个整数,然后先输出奇数编号的整数,再输出偶数编号的整数。
#include<stdio.h>
int main()
{int number[10];int i;printf("请输入10个整数:\n");for(i=0;i<10;i++){printf("第%d个整数:",i+1);scanf("%d",&number[i]); } printf("输出:\n");for(i=0;i<10;i+=2){printf("第%02d个整数:%d\n",i+1,number[i]);} for(i=1;i<10;i+=2){printf("第%02d个整数:%d\n",i+1,number[i]);}return 0;
}
运行结果

编写C语言程序,从键盘输入不超过10个字符,然后逆序输出。
#include<stdio.h>
#define N 10
int main()
{char str[N];int i;printf("输入:");for(i=0;i<N;i++){scanf("%c",&str[i]);if(str[i]=='\n'){break;}}printf("输出:");while(--i>=0){printf("%c",str[i]);}return 0;
}
运行结果

编写C语言程序,从键盘输入日期,然后输出该日期是一年中的第几天(假定年份是平年,即2月有28天)。如果输入的日期不存在,则输出”非法日期“。
#include<stdio.h>
#define N 12
int main()
{int days[N]={31,28,31,30,31,30,31,31,30,31,30,31};int month,day;int day_of_year=0;int i;printf("请输入日期(月—日):");scanf("%d-%d",&month,&day);if((month<1)||(month>N)||(day<1)||(day>days[month-1])){printf("非法日期");return 1; }for(i=0;i<month-1;i++){day_of_year+=days[i];}day_of_year+=day;
printf("%d月%d日是平年的第%d天。",month,day,day_of_year);
return 0;
}
运行结果

编写C语言程序,从键盘输入某比赛的10个评委给出的评分,分值是0~100的整数(包含0和100).然后输出这10个评分中的最高分。如果输入的评分超出0~100的范围,则重新输入该评分。如果有多个最高评分,则输出其中一个最高分。
#include<stdio.h>
#define N 10
int main()
{int score[N];int max=0;int sum=0;int i=0;printf("请输入%d个评分:\n",N);while(i<N){printf("第%02d个评分:",i+1);scanf("%d",&score[i]);if((score[i]<0)||(score[i]>100)){continue ;}else{if(score[i]>score[max]){max=i;}i++;}}printf("最高评分:\n");printf("第%02d个评分:%d\n",max+1,score[max]);return 0;
}
运行结果

编写C语言程序,随机产生10个评委给出的评分,分值是0~100的整数(包含0和100).然后输出这10个评分并标注出一个最大值和一个最小值,最后计算除去一个最大值和一个最小值后剩余8个评分的平均值,保留1位小数。如果有多个最大值或最小值,则只标注其中一个。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
int main()
{int score[N];int max=0;int min=0;int sum=0;int i=0;srand(time(NULL));for(i=0;i<N;i++){score[i]=rand()%101;if(score[i]<score[min]){min=i;}if(score[i]>score[max]){max=i;}}if(min==max){max++;}for(i=0;i<N;i++){printf("第%02d个评分:%3d",i+1,score[i]);if(i==min){printf(",最低分\n"); }else if(i==max){printf(",最高分\n");}else{printf("\n");sum+=score[i];} }printf("平均分:%.1f\n",(double)sum/(N-2));return 0;
}
运行结果

编写一个C语言函数,函数名是get_max,返回值是int类型,参数列表中有2个int类型变量x和y作为形式参数。函数get_max()的功能是按照给定的整数变量x和y比较两者中的最大值,并返回该最大值。函数get_max()不允许从键盘输入数据,也不允许输出数据到屏幕中。
#include<stdio.h>
int get_max(int x,int y);
int main()
{int number1,number2,max;printf("第1个整数:");scanf("%d",&number1) ;printf("第2个整数:");scanf("%d",&number2) ;max=get_max(number1,number2);printf("%d和%d之间的最大值是:%d\n",number1,number2,max);return 0;
}int get_max(int x,int y)
{int max;if(x>y){max=x;}else{max=y;}return max;
}
运行结果
