1. 有一个函数
添加图片注释,不超过 140 字(可选)
,写一段程序,输入
添加图片注释,不超过 140 字(可选)
的值,输出
添加图片注释,不超过 140 字(可选)
的值。
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x>100||x<0)
y=-1;
else if(x==0)
y=0;
else
y=1;
printf("%dn",y);
return 0;
}
2. 输入3个实数a,b,c,输出其中最小的数。
#include<stdio.h>
int main()
{
int a,min=32767,n=3;
while(n–)
{
scanf("%d",&a);
if(a<min)
min=a;
}
printf("%dn",min);
return 0;
}
3. 输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,s,d;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
d=(a+b+c)/2;
s=sqrt(d*(d-a)*(d-b)*(d-c));
printf("%dn",s);
}
else
printf("三边构不成三角形n");
}
4. 输入4个整数,输出4个数中的最大值、最小值。
#include<stdio.h>
int main()
{
int a,max=-32768,min=32767,n=4;
while(n–)
{
scanf("%d",&a);
if(a>max)
max=a;
if(a<min)
min=a;
}
printf("%d %dn",max,min);
return 0;
}
5. 要求按照成绩的等级输出百分制分数段, A等为90分以上,B等为80~89,C等为70~79,D等为60~69,E等为60分以下。成绩的等级由键盘输入,若输入的等级非A、B、C、D、E字符,输出”enter data error”。
#include<stdio.h>
int main()
{
char a;
a=getchar();
if(a=='A')
{
printf("90分以上n");
}
else if(a=='B')
{
printf("80~89n");
}
else if(a=='C')
{
printf("70~79n");
}
else if(a=='D')
{
printf("60~69n");
}
else if(a=='E')
{
printf("60分以下n");
}
else
{
printf("enter data errorn");
}
return 0;
}
6. 有一个函数:
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
,写一段程序,输入
添加图片注释,不超过 140 字(可选)
的值,输出
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
的值。
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
if(x<1)
{
y=x;
printf("%dn",y);
}
else if(x==10)
{
y=3*x-11;
printf("%dn",y);
}
else
{
y=2*x-1;
printf("%dn",y);
}
return 0;
}
7. 输入成绩,要求输出成绩等级A、B、C、D、E或error。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,0~60分为‘E’。若输入成绩低于0分和高于100分则输出error。
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a>100)
printf("errorn");
else
{
if(a>90)
printf("An");
else if(a>80)
printf("Bn");
else if(a>70)
printf("Cn");
else if(a>60)
printf("Dn");
else
printf("En");
}
return 0;
}
8. 求一元二次方程ax2+bx+c=0的解。(考虑b2-4ac三种情况)
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,d,e,x1,x2,i;
scanf("%lf%lf%lf",&a,&b,&c);
d=b*b-4*a*c;
e=-b/(2*a);
if(d>1e-6)
{
x1=e+sqrt(d)/(2*a);
x2=e-sqrt(d)/(2*a);
printf("%.2lf %.2lf",x1,x2);
}
else if(d==1e-6)
{
x1=x2=e;
printf("%.2lf %.2lf",x1,x2);
}
else
{
printf("%.2lf+%.2lfi %.2lf-%.2lfin",e,sqrt(-d)/(2*a),e,sqrt(-d)/(2*a));
}
return 0;
}
9. 输入某年某月某日,判断这一天是这一年的第几天?(注意是否为闰年)
#include<stdio.h>
int main()
{
int i,n=0,year,math,day,s[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&year,&math,&day);
if((year%4==0&&year%100!=0)||(year%400==0))
s[1]=29;
for(i=0;i<math-1;i++)
n=n+s[i];
n=n+day;
printf("%dn",n);
return 0;
}
10. 公司规定,男职工到60岁退休,女职工到55岁退休。编写一个程序,输入职工的性别和年龄,判断出该职工是“已退休”还是“在职”。(输入时,用一个小写英文字母来表示性别,‘m’表示男性,’f’表示女性)。
#include<stdio.h>
int main()
{
char a;
int b;
a=getchar();
scanf("%d",&b);
if(a=='m')
{
if(b>=60)
printf("已退休n");
else
printf("在职n");
}
else if(a=='f')
{
if(b>=55)
printf("已退休n");
else
printf("在职n");
}
return 0;
}
11.输入一个数,判断该数是否为素数。
#include<stdio.h>
int main()
{
int a,b;
scanf("%d",&a);
for(b=2;b<a;b++)
if(a%b==0)break;
if(b<a) printf("%d is not a prime number.n",a);
else printf("%d is a prime number.n",a);
return 0;
}
12. 编程实现求解s=1*2+2*3+3*4+…+20*21,并输出结果。
#include<stdio.h>
int main()
{
int a,s=0;
for(a=1;a<=20;a++)
s=s+a*(a+1);
printf("%dn",s);
return 0;
}
13.求Fibonacci数列的前20个数,并按每行5个数输出。
#include<stdio.h>
int main()
{
int f1=1,f2=1,a,f3;
printf("%d %d ",f1,f2);
for(a=3;a<=20;a++)
{
f3=f1+f2;
printf("%d ",f3);
if(a%5==0)
printf("n");
f1=f2;
f2=f3;
}
return 0;
}
14. 求1+3!+5!+…+19!的和。
#include<stdio.h>
int main()
{
double s,c=0;
int a,b;
for(a=1;a<=19;a+=2)
{
s=1;
for(b=1;b<=a;b++)
s=s*b;
c=c+s;
}
printf("%lfn",c);
return 0;
}
15. 有一分数序列
添加图片注释,不超过 140 字(可选)
,求其前30项的和。
#include<stdio.h>
int main()
{
int i;
double a=1,b=2,s=0,t;
for(i=1;i<=30;i++)
{
s=s+a/b;
t=b;
b=a+b;
a=t;
}
printf("%lfn",s);
return 0;
}
16.编写一个程序,计算1+3+32+33……310的值并输出。
#include<stdio.h>
#include<math.h>
int main()
{
int a=0,i;
for(i=0;i<=10;i++)
a=a+pow(3,i);
printf("%dn",a);
return 0;
}
17.从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。例如,输入x为1234,则其千位为1、百位为2、十位为3、个位为4,然后计算1+2+3+4=10,输出10。(要求使用循环实现)
#include<stdio.h>
int main()
{
int m,n,s=0;
scanf("%d",&m);
while(m!=0)
{
n=m%10;
m=m/10;
s=s+n;
}
printf("%dn",s);
return 0;
}
18. 输入一个八进制数,并将其转换为十进制。(要求使用循环实现)
#include<stdio.h>
#include<math.h>
int main()
{
int a,b=0,m=0;
scanf("%d",&a);
while(a!=0)
{
m=m+(a%10)*(int)pow(8,b);
b++;
a=a/10;
}
printf("%dn",m);
return 0;
}
19. 输入两个正整数m和n,求其最大公约数和最小公倍数。
#include<stdio.h>
int main()
{
int a,b,c,d,p;
scanf("%d%d",&a,&b);
if(a<b)
{
c=a;
a=b;
b=c;
}
p=a*b;
while(b!=0)
{
d=a%b;
a=b;
b=d;
}
printf("%d %dn",a,p/a);
return 0;
}
20.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include<stdio.h>
int main()
{
int i;
float h=50,a=100;
for(i=2;i<=10;i++)
{
a=a+2*h;
h=h/2;
}
printf("%f %fn",a,h);
return 0;
}
21. 输出倒三角形式的9*9口诀表,要求用循环实现。
9*1=9 9*2=18 9*3=27 9*4=36…… 9*9=81
8*1=8 8*2=16 8*3=24 8*4=32 8*8=6
1*1=1
#include<stdio.h>
int main()
{
int a,b,s;
for(a=9;a>0;a–)
{
for(b=1;b<=a;b++)
{
s=a*b;
printf("%d*%d=%d ",a,b,s);
}
printf("n");
}
}
22. 输出菱形图案。(要求使用双循环实现,不能利用字符数组或简单的printf函数输出)
添加图片注释,不超过 140 字(可选)
#include<stdio.h>
int main()
{
int a,b,c;
for(a=1;a<=5;a++)
{
for(b=1;b<=5-a;b++)
printf(" ");
for(c=1;c<=2*a-1;c++)
printf("*");
printf("n");
}
for(a=1;a<=4;a++)
{
for(b=1;b<=a;b++)
printf(" ");
for(c=1;c<=9-2*a;c++)
printf("*");
printf("n");
}
return 0;
}
23. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是完数。编写程序找出500以内的所有完数,并按下面的格式输出其因子:
6 its factors are 1,2,3
#include<stdio.h>
int main()
{
int a,b,c;
for(a=2;a<500;a++)
{
b=0;
for(c=1;c<a;c++)
if((a%c)==0)b+=c;
if(b==a)
{
printf("%d,its factors are ",a);
for(c=1;c<a;c++)
if(a%c==0)printf("%d ",c);
printf("n");
}
}
return 0;
}
24.编程输出如下形式的九九乘法表
1 2 3 4 5 6 7 8 9
– – – – – – – – –
1
2 4
3 6 9
……
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
#include<stdio.h>
int main()
{
int a,b,s;
for(a=1;a<=9;a++)
{
for(b=1;b<=a;b++)
{
s=a*b;
printf("%d ",s);
}
printf("n");
}
}
25.一个偶数总能表示为两个素数之和。要求:输入一个偶数,将其表示成两个素数之和,直到输入的数为0。
#include<stdio.h>
int main()
{
int i,j,n,k;
printf("请输入一个偶数n");
scanf("%d",&n);
if(n!=0)
{
for(i=2;i<=n/2;i++)
{
for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
{
for(k=2;k<n-i;k++)
if((n-i)%k==0)
break;
if(k==(n-i))
{
printf("%d %dn",i,k);
}
}
}
}
return 0;
}
26. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。
#include<stdio.h>
int main()
{
int a,b,c,s[10];
for(a=0;a<10;a++)
scanf("%d",&s[a]);
printf("n");
for(b=0;b<9;b++)
for(a=0;a<9-b;a++)
if(s[a]>s[a+1])
{
c=s[a];
s[a]=s[a+1];
s[a+1]=c;
}
for(a=0;a<10;a++)
printf("%d ",s[a]);
printf("n");
return 0;
}
27. 输入10个整型整数,用选择法对这10个数排序,并该由大到小顺序在屏幕上输出。
#include<stdio.h>
int main()
{
int a[10],i,j,t,min;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j]) min=j;
t=a[i];
a[i]=a[min];
a[min]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("n");
return 0;
}
28. 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。(同一数组中完成)
#include<stdio.h>
int main()
{
int i;
char a[5];
scanf("%s",a);
for(i=4;i>=0;i–)
printf("%c",a[i]);
printf("n");
return 0;
}
29. 给一个不多于6位的正整数,要求:①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为158,应输出851。(利用数组知识)
#include<stdio.h>
#include<string.h>
int main()
{
int m,i,j;
char a[50];
scanf("%s",a);
m=strlen(a);
printf("%dn",m);
for(i=0;i<m;i++)
{
printf("%c ",a[i]);
}
printf("n");
for(j=m-1;j>=0;j–)
{
printf("%c",a[j]);
}
printf("n");
return 0;
}
30. 用筛选法求100之内的素数。(利用数组知识)
#include<stdio.h>
#include<math.h>
int main()
{
int a[101],i,j,n;
for(i=0;i<100;i++)
a[i]=i;
a[0]=1;
for(i=2;i<sqrt(100);i++)
for(j=i+1;j<=100;j++)
{
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
for(i=2,n=0;i<100;i++)
{
if(a[i]!=0)
printf("%d ",a[i]);
}
printf("n");
return 0;
}
31. 编程实现:输入任意一个不超过5位的十进制整数,取出该数中的所有奇数数字,按原来的顺序组成一个新的数。
#include<stdio.h>
#include<string.h>
int main()
{
int i,b;
char a[10];
gets(a);
b=strlen(a);
for(i=0;i<b;i++)
{
if((int)a[i]%2!=0)
printf("%c",a[i]);
}
puts("");
}
32. 有一个已升序排列的数组,要求输入一个数后,按原来排序的规律将它插入数组中。(在同一数组中实现)
#include<stdio.h>
int main()
{
int i,j,s;
char a[10]={1,2,4,9,32,41,64,88,91,98};
scanf("%d",&s);
for(i=0;i<10;i++)
{
if(s>a[i])
printf("%d ",a[i]);
else break;
}
printf("%d ",s);
for(j=i;;j++)
{
printf("%d ",a[j]);
if(a[j]==a[9]) break;
}
printf("n");
return 0;
}
33. 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。
#include<stdio.h>
int main()
{
int i,j,a[2][3]={{1,2,3},{4,5,6}},b[3][2];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("n");
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%5d",b[i][j]);
printf("n");
}
return 0;
}34. 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。
#include<stdio.h>
int main()
{
int i,j,a=0,b=0,s[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},max;
max=s[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(s[i][j]>max)
{
max=s[i][j];
a=i;
b=j;
}
printf("%d %d %dn",max,a,j);
return 0;
}
35. 找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。
#include<stdio.h>
int main()
{
int a[3][4]={1,13,9,10,3,2,7,6,4,11,8,15},i,j,max,k,b,c;
for(i=0;i<3;i++)
{
max=a[i][0];
for(j=0;j<4;j++)
{
if(max<a[i][j])
{
max=a[i][j];
b=j;
}
}
c=1;
for(k=0;k<3;k++)
{
if(a[k][b]<max)
{ c=0;break;}
}
if(c==1)
{
printf("鞍点为:%dn",a[i][j-1]);
break;
}
}
}36. 输入一行字符,分别统计出其中的英文字符、数字和其他字符的个数。
#include<stdio.h>
int main()
{
char d;
int a=0,b=0,c=0;
while((d=getchar())!='n')
{
if(d>='a'&&d<='z'||d>='A'&&d<='Z')
a++;
else if(d>='0'&&d<='9')
b++;
else
c++;
}
printf("%d %d %dn",a,b,c);
return 0;
}
37 将输入的字符串逆序排列,如输入ABCD,输出DCBA。
#include<stdio.h>
#include<string.h>
int main()
{
int b,i;
char a[100];
gets(a);
b=strlen(a);
for(i=b-1;i>=0;i–)
{
printf("%c",a[i]);
}
printf("n");
return 0;
}
38. 有3个字符串,要求找出其中最大者。
#include<stdio.h>
#include<string.h>
int main()
{
int t;
char a[50],b[50],c[50],d[50];
gets(a);
gets(b);
gets(c);
t=strcmp(a,b);
if(t==1)
strcpy(d,a);
else
strcpy(d,b);
t=strcmp(d,c);
if(t==1)
printf("%sn",d);
else
printf("%sn",c);
return 0;
}39. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include<stdio.h>
int main()
{
char a;
int b=1;
a=getchar();
while((a=getchar())!='n')
{
if(a==' ')
b++;
}
printf("%dn",b);
return 0;
}
40. 编一个程序,将两个字符串连接起来,不要用strcat函数。
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100];
gets(a);
gets(b);
printf("%s%sn",a,b);
return 0;
}41. 有一篇文章,共有4行文章,每行有20个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。
#include<stdio.h>
int main()
{
int x,s,k,other,i,j,d=0;
char a[20];
for(i=0;i<4;i++)
{
gets(a);
d=x=s=k=other=0;
j=0;
while(a[j]!='')
{
if(a[j]>='A'&&a[j]<='Z')
d++;
else if(a[j]>='a'&&a[j]<='z')
x++;
else if(a[j]>='0'&&a[j]<='9')
s++;
else if(a[j]==' ')
k++;
else other++;
j++;
}
printf("第%d行n大写字母=%dn小写字母=%dn数字=%dn空格=%dn其它=%dn",i+1,d,x,s,k,other);
}
}
42. 编程实现:输入任意一个字符串,依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串后输出。
#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int i;
gets(a);
for(i=0;i<=strlen(a);i++)
{
if(a[i]>='0'&&a[i]<='9')
printf("%c",a[i]);
}
printf("n");
return 0;
}43. 编写一个程序,将字符s2中的全部字符复制到字符数组s1中,不用strcpy函数。
#include<stdio.h>
#include<string.h>
int main()
{
char s1[80],s2[80];
int i;
scanf("%s",s2);
for(i=0;i<=strlen(s2);i++)
s1[i]=s2[i];
printf("s1: %sn",s1);
return 0;
}
44. 有一行电文,已按下面规律译成密码:
A→Z a→z
B→Y b→y
C→X c→x
即第1个字母变成第26个字母,第i个字母变成第(26 – i + 1)个字母。非字母符号不变。要求编程序将密码译回原文,并输出密码和原文。
#include<stdio.h>
int main()
{
int j,n;
char ch[80],tran[80];
gets(ch);
printf("%sn",ch);
j=0;
while(ch[j]!='')
{
if((ch[j]>='A')&&(ch[j]<='Z'))
tran[j]=155-ch[j];
else if((ch[j]>='a')&&(ch[j]<='z'))
tran[j]=219-ch[j];
else
tran[j]=ch[j];
j++;
}
n=j;
for(j=0;j<n;j++)
putchar(tran[j]);
printf("n");
return 0;
}
本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com