c语言题型总结_c语言编程题总结
c语言题型总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言编程题总结”。
C语言题型总结
1.字母的输入与输出:
#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);printf(“输出三个字母:%c %c %c”,ch1-32,ch2-32,ch3-32);}
#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);ch1=getchar();ch2=getchar();ch3=getchar();printf(“输出三个字母:%3c%3c%3c”,ch1-32,ch2-32,ch3-32);}
#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);ch1=getchar();ch2=getchar();ch3=getchar();putchar(ch1-32);putchar(ch2-32);putchar(ch3-32);} 2.分类显示:
#include main(){ int m;printf(“请输入m:k”);scanf(“%d”,&m);
} if(m>0)printf(“%d is greater than 0”);else printf(“%d is le than or equal to 0”);3.分段函数:
#include main(){ float x,y;scanf(“%f”,&x);if(x
y=1+x;else if(x
y=1+(x-2)*(x-2);else
y=(x-1)*(x-1)+(x-2)*(x-2);printf(“x=%f,y=%f”,x,y);} 4.成绩分等级: #include main(){ int s,num;char grade;
printf(“请输入成绩s:”);scanf(“%d”,&s);
num=s/10;
switch(num){
case 10:grade='A';break;
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
deflaut:break;
} } printf(“The score is %d,the grade is %cn”,s,grade);5.求最大公约数、最小公倍数:
#include main(){ int m,n,i,b;printf(“请输入两个数:”);
scanf(“%d,%d”,&m,&n);for(i=m;i>0;i--)
if(m%i==0&&n%i==0)
break;b=(m*n)/i;printf(“最大公约数:%d,最小公倍数:%d”,i,b);} 6.1000以内素数:
#include main(){ int i,j;for(i=1000;i>0;i--)
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
printf(“%d,”,i);} } 7.1000以内最大的10个质数求和:
#include main(){ int i,j,sum=0,n=0,a[10];for(i=999;i>2;i=i-2)
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
{
a[n]=i;
n++;
if(n>10)
break;
} } for(n=0;n
sum+=a[n];
printf(“%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%dn”,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],sum);}
#include main(){ int i,j,sum=0,n=0,a[10];for(i=999;i>2;i=i-2)
{
for(j=2;j
if(i%j==0)
break;
if(j==i)
{
a[n]=i;
sum+=a[n];
n++;
if(n>9)
break;
} } for(n=0;n
printf(“%d,”,a[n]);
printf(“%d”,sum);}
8.各位的和:
#include main(){ int n,c;c=0;scanf(“%d”,&n);
while(n!=0)
{
c+=n%10;
n=n/10;}
printf(“%d”,c);} 9.判断几位数:
#include main(){ int n,c;c=0;scanf(“%d”,&n);
while(n!=0)
{
c++;
n=n/10;}
printf(“%d”,c);} 10.奇数项相加,偶数项相减:
#include main(){ int i;double sum;i=1,sum=0;while(i
if(i%2==0)
sum=sum-1.0/i;
else
sum=sum+1.0/i;
i++;} printf(“%lfn”,sum);} 11.100-200以内找质数:
#include main(){ int i,j,sign;for(i=100;i
{
sign=1;
for(j=2;j
if(i%j==0)
{
sign=0;break;
}
if(sign==1)
printf(“%d is/n”,i);
else
printf(“%d is not/n”,i);} } 12.10个成绩的最高、最低、平均值
#include main(){ int a[10],max,min,i;float aver,sum;max=min=sum=0;printf(“请输入10个成绩:”);for(i=0;i
scanf(“%d”,&a[i]);for(i=0;i
if(a[i]>max)
max=a[i];
if(a[i]
min=a[i];} printf(“max=%d,min=%d,aver=%f”,max,min,aver);} 13.数组删除一个元素
#include main(){ int a[10],num,i;printf(“请输入数组:”);for(i=0;i
scanf(“%d”,&a[i]);printf(“删除其中一个数num=”);scanf(“%d”,&num);for(i=num;i
a[i-1]=a[i];
a[9]=0;
printf(“后来的数组为:”);for(i=0;i
printf(“%d”,a[i]);} 14.数组添加一个元素
#include main(){ int a[10],b[11],num,i,t;printf(“请输入数组:”);for(i=0;i
scanf(“%d,”,&a[i]);printf(“添加其中一个数num=”);scanf(“%d,”,&num);printf(“添加的数为:”);scanf(“%d”,&t);
for(i=0;i
b[i]=a[i];
b[num-1]=t;for(i=num;i
b[i]=a[i-1];
printf(“后来的数组为:”);for(i=0;i
printf(“%d,”,b[i]);} 15.数组形式计算成绩
#include main(){ int a[5][3],i,j;float aver1[5],aver2[3],s,s1,s2;printf(“请输入数组:n”);for(i=0;i
s1=0;
for(j=0;j
{
scanf(“%d”,&a[i][j]);
s1+=a[i][j];
}
aver1[i]=(float)s1/3;} for(j=0;j
s2=0;(不能随便动位置)
for(i=0;i
s2+=a[i][j];
aver2[j]=(float)s2/5;
s+=aver2[j];} for(i=0;i
printf(“student%d:%3.1f,”,i,aver1[i]);for(j=0;j
printf(“course%d:%3.1f,”,j,aver2[j]);
printf(“Average:&3.1f”,s/3);} 输入成绩时,一行三个,之后回车
16.函数的多级调用
float myfabs(float x){ return x>0?x:-x;} float myfunc(float r){ return 2*myfabs(r)+1;} main(){ float f=0.5;printf(“%f”,myfunc(f));} 17.三个数比较大小
#include int getMax(int a,int b,int c){ int t;if(a>b)
t=a;else
t=b;if(c>t)
t=c;
return t;} int getMin(int a,int b,int c){ int k;if(a>b)
k=b;else
k=a;if(c
k=c;return k;} int getMax(int a,int b,int c);int getMin(int a,int b,int c);main(){ int a,b,c;printf(“请输入三个整数:n”);scanf(“%d,%d,%d”,&a,&b,&c);printf(“最大值是:%d,最小值是:%d”,getMax(a,b,c),getMin(a,b,c));} 18.求最大公约数、最小公倍数(调用函数)
#include int gcd(int a,int b){ int i;for(i=a;i>0;i--)
if(a%i==0&&b%i==0)
break;return i;} int mul(int a,int b){ int j;j=a*b/gcd(a,b);return j;} int gcd(int a,int b); int mul(int a,int b); main(){ int a,b;printf(“请输入两个整数:n”);scanf(“%d,%d”,&a,&b);printf(“最大公约数是:%d,最小公倍数值是:%d”,gcd(a,b),mul(a,b));} 19.二维数组找最大行、最小行,之后换行
#include main(){
int n,i,j,nMax=0,nMin=0,temp;int a[10][10];printf(“请输入正整数:n”);
scanf(“%d”,&n);printf(“请输入二维数组a[%d][%d]n”,n,n);for(i=0;i
for(j=0;j
scanf(“%d,”,&a[i][j]);} for(i=0;i
for(j=0;j
{
if(a[i][j]>a[nMax][j])
{
nMax=i;
}
else if(a[i][j]
{
nMin=i;
}
}
if(nMax==nMin)
{
printf(“变换后的二维数组为:n”);
for(i=0;i
{
for(j=0;j
printf(“%d,”,a[i][j]);
printf(“n”);
}
}
else
{
for(j=0;j
{
temp=a[nMax][j];
a[nMax][j]=a[nMin][j];
a[nMin][j]=temp;
}
printf(“变换后的二维数组为:n”);
for(i=0;i
{
for(j=0;j
printf(“%d,”,a[i][j]);
printf(“n”);
}
} }
20.判断某年某月某日是星期几
#include int daysInMonth(int year,int month);main(){
int y,m,d,i,days;int isLeapYear(int year);scanf(“%d,%d,%d”,&y,&m,&d);for(i=2012;i
days+=366;else days+=365;days+=daysInMonth(y,i);for(i=1;i
case 0:
printf(“星期日 ”);break;case 1:
printf(“星期一 ”);break;case 2:
printf(“星期二 ”);break;case 3:
printf(“星期三 ”);break;case 4:
printf(“星期四 ”);break;case 5:
printf(“星期五 ”);break;case 6:
printf(“星期六 ”);break;} } int isLeapYear(int year){
} {
if(year%400==0||(year%4==0&&year%100!=0))return 1;return 0;int daysInMonth(int year,int month)switch(month){ case 1: case 3: case 5: case 7: case 8:
case 10: case 12:return 31;case 4: case 6:
case 9:
case 11:return 30;case 2:if(isLeapYear(year)==1)
} return 29;
} else return 28;21.字符串的连接
#include main(){ char s1[20],s2[20],*p1,*p2;p1=s1;p2=s2;
printf(“请输入字符串1:”);gets(s1);
printf(“请输入字符串2:”);
gets(s2);while(*p1)
p1++;(先输出p1所指的第一个字母,然后使p1指向下一个字符,再输出,p再自增)
while(*p1++=*p2++);(把*p2的内容赋给*p1,p1,、p2自增,*p2就是表达式的值!指的是字符串的内容,而非对地址赋值)p是指针变量,他不能用来存放字符串,只能存放char变量的地址。
printf(“连接后结果:%sn”,s1);}
#include main(){
} char s1[20],s2[20];int i,j;printf(“请输入字符串s1:”);gets(s1);printf(“请输入字符串s2:”);gets(s2);for(i=0;s1[i]!=' ';i++);for(j=0;s2[j]!=' ';j++)
{
} s1[i] =' ';s1[i]=s2[j];i++;puts(s1);#include void catStr(char *str1,char *str2);main(){
char str1[20]=“hello”,str2[20]=“world”;printf(“the origin :”);
gets(str1);
gets(str2);
catStr(str1,str2);
printf(“now :”);
puts(str1);
puts(str2);} void catStr(char*str1,char*str2){ while(*str1!=' ')
str1++;
while(*str2!=' '){
*str1++=*str2;
str2++;}
*str1=' ';}
22.两个数交换
#include void swap(int *p1,int *p2){
} int temp;temp=*p1;*p1=*p2;*p2=temp;main(){ int a=5,b=9,*pa=&a,*pb=&b;
printf(“交换前a=%d,b=%dn”,a,b);
} swap(pa,pb);printf(“交换后a=%d,b=%dn”,a,b);23.求三角形的周长和面积 #include void Proce(float f1,float f2,float f3,float *p1,float *p2);main(){ float a,b,c,fArea,fPerimeter;
printf(“nPlease input 3 sides of the triangle:”);
} void Proce(float f1,float f2,float f3,float *p1,float *p2){
} float s;s=(f1+f2+f3)/2;*p1=sqrt(s*(s-f1)*(s-f2)*(s-f3));*p2=f1+f2+f3;scanf(“%f%f%f”,&a,&b,&c);Proce(a,b,c,&fArea,&fPerimeter);printf(“Area=%f,Perimeter=%f”,fArea,fPerimeter);24.回文数
#include main(){
}
#include main(){
int n,c=0;printf(“Pleae input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);long n;printf(“Pleae input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);while(n){ printf(“%d”,n%10);} n/=10;printf(“n”);getchar();while(n){
c=c*10+n%10;
n/=10;}
} printf(“%d”,c);printf(“n”);getchar();25.字符串的复制
#include void upCopy(char *new,char *old);main(){
char s1[20],s2[20];
gets(s1);
upCopy(s2,s1);
puts(s1);
puts(s2);} void upCopy(char *new,char *old){
while(*old!=' '){
if(*old>='A'&&*old
*new++=*old;
old++;}
*new=' ';} 26.初始化一个3X5的二维矩阵,计算前4列的和,保存在每行的最后一个元素中。例如:第一行的和为A[0][0]+ A[0][1] +A[0][2]+ A[0][3],放入A[0][4]中,要求输出原始矩阵和新矩阵。
#include main(){
int A[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},i,j;for(i=0;i
}
printf(“n”);} for(i=0;i
for(j=0;j
} for(j=0;j
#include void mytrcat(char *s1,char *s2){
while(*s1!=' ')
s1++;while(*s2!=' '){
if(*s2>='0'&&*s2
} void mystrcat(char *s1,char *s2);main(){
char *s1[20],*s2[20];printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2);
mytrcat(s1,s2);} puts(s1);28.写一个函数mystrcmp(char *s1,char *s2),其功能和库函数strcmp相同。在主函数中定义字符数组s1和s2并初始化,调用mystrcmp后由main函数输出比较的结果。本题不许使用字符串处理函数。#include char mystrcmp(char *s1,char *s2){
int result;while(*s1!=' '){
if(*s1>*s2)return 1;if(*s1
s1++;
s2++;}
return 0; } char mystrcmp(char *s1,char *s2);main(){ char s1[20],s2[20];
int result;printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2);
result=mystrcmp(s1,s2);printf(“%d”,result);} 还有问题,再试试?为啥不行 折半查找 #include #define N 6 main(){
int a[N],i,j,t,mid,x,flag,low,high;printf(“the origin shu zu is:”);for(i=0;i
min=i;
for(j=i+1;j
{
if(a[min]>a[j])
min=j;
}
} {
} } t=a[i];a[i]=a[j];a[j]=t;printf(“now shu zu is: ”);for(i=0;i
printf(“%d,”,a[i]);printf(“please input the number:”);
scanf(“%d”,x);
low=0;high=N-1;while(low
mid=(high+low)/2;if(x==a[mid]){ flag=1;break;}
if(x>a[mid])
low=mid+1;else high=mid-1;} if(flag==1)
printf(“found:%d”,mid+1);else } printf(“not found”);#include int main(){ int a[20]={1,2,3,4,6,7,8,10,11,13,14,15,16,18,19,21,23,24,26,28};int n,low,high,flag,mid;printf(“输入一个数:”);scanf(“%d”,&n);low=0;high=19;
while(low
break;}
if(n>a[mid])
low=mid+1;else
high=mid-1;
} if(flag==1)
printf(“found,%dn”,mid+1);else
printf(“not foundn”);}