C语言例题.docx
- 文档编号:10660404
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:25
- 大小:66.36KB
C语言例题.docx
《C语言例题.docx》由会员分享,可在线阅读,更多相关《C语言例题.docx(25页珍藏版)》请在冰豆网上搜索。
C语言例题
C语言复习资料
一、运算符和表达式:
选择填空比较多
1、基本运算符:
自己看书,掌握好
2、自增、自减运算符:
作用是使变量的值加1或者减1
如:
++i,——i(使用之前,先使i的值加1或者减1),i++,i——(使用后使i的值加1或者减1)
例如:
如果i的原值等于3(即i=3),则①j=++I;(i的值先变为4,再赋给3,j的值为4)②j=i++;(先将i的值3赋给j,j的值为3,然后i变为4)
又例如:
i=3;printf(”%d”,++i);输出结果为4,若改为printf(”%d\n”,i++);则输出结果为3
注意:
自增自减运算只能用于变量,不能用于常量或表达式。
3、复合赋值运算符
如果在“=”前加一个“+”,就变成了“+=”。
如:
a+=3等价于a=a+3
x*=y+9等价于x=x*(y+9)
x%=3等价于x=x%3
4、赋值表达式:
自右而左赋值
例如:
a=b=c=5(赋值表达式的值为5,其中abc的值都是5)
a=5+(c=6)(表达式值为11,其中a为11,c为6)
a=(b=10)/(c=2)(表达式值为5,a等于5,b等于10.c等于2)
5、关系运算符的优先级
C语言中的6种关系运算符
1、<2、<=3、>4、>=5、==6、!
=
其中1234的优先级一样,同属高;56的优先级一样,同属低;运算符由低到高:
赋值运算赋→&&和||→关系运算符→算术运算符→!
(非)
例如:
c>a+b(关系运算符的优先级低于算术运算符)
a>b==c(大于运算符>的优先级高于相等运算符==)
a=b>c(关系运算符的优先级高于赋值运算符)
6、逻辑运算符
&&逻辑与a&&b如果a和b都为真,则结果为真,否则为假;
||逻辑或a||b如果a和b一个以上为真,则结果为真,二者都为假,结果为假;
!
逻辑非!
a如果a为假,则!
a为真,如果a为真,则!
a为假。
7、break和continue语句作用
break语句是使流程跳到循环体之外,接着执行循环体下面的语句。
注意:
break语句只能用于循环语句和switch语句之中,二不能单独使用。
continue语句是结束本次循环,即跳过循环体中尚未执行的语句,转到循环体结束之前,接着执行for循环语句中的“表达式3”,然后进行下一次是否执行循环体的判定。
区别:
continue语句只是结束本次循环,而不是终止整个循环的执行,而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
8、字符串数组
1)注意“\0”的用法。
2)使用字符串数组。
1puts函数:
puts(字符数组名)如:
puts(str);
2gets函数:
gets(字符数组名)如:
gets(str);puts和gets函数只能放一个字符串数组,不能puts(str1,str2);
3streat函数——字符串数组连接函数:
streat(字符数组1,字符数组2);
4strcpy函数——字符串赋值函数:
strcpy(字符串数组1,字符串数组2);
5strcmp函数——字符串比较函数:
strcmp(字符串数组1,字符串数组2);
这个函数比较重要,C里面用的比较多,其比较规则是:
两个字符串自左向右逐个字符相比较,直到出现不同的字符或者遇到“\0”为止。
(不知道你们这一块怎么学的,我们那时候没大讲,或许是我没大听)。
二、例题
1、从键盘输入一个大写字母,在显示屏幕上输出该字母的小写字母.(提示:
getcharputchar)
#include
intmain()
{
charc1,c2;
c1=getchar();
c2=c1+32;
putchar(c2);//或者printf(“大写字母:
%c\n小写字母:
%c\n”,c1,c2);
putchar(‘\n’);
return0;
}
2、switch语句P102
按要求输出等级百分制分数段,A等为85分以上,B等为70~84,C等为60~69,D等为60分一下,分数由键盘输入。
#include
intmain()
{
chargrade;
scanf(“%c”,&grade);
printf(“Yourscoreis:
”);
switch(grade)
{
case‘A’:
printf(“85~100\n”);
break;
case‘B’:
printf(“70~84\n”);
break;
case‘C’:
printf(“60~69\n”);
break;
case‘D’:
printf(“<60\n”);
break;
default:
printf(“Enterdataerror!
\n”);
}
return0;
}
弄懂switch语句的结构,注意格式,多看看课本上的说明
3、选择结构程序
写一个程序,判断某一年是否是闰年。
(leap=1是闰年,leap=0非闰年)。
1画流程框图
2编写程序代码
#include
intmain()
{
intyear,leap;
printf(“enteryear:
\n”);
scanf(“%d\n”,&year);
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
{
leap=1;
}
else
{
leap=0;
}
}
else
{
leap=1;
}
else
{
leap=0;
}
}
if(leap)
{
printf(“%dis”,year);
}
else
{
printf(“%disnot”,year);
}
printf(“aleapyear.\n”);
return0;
}
仔细想想if和else的嵌套关系,如果写判断是否是闰年的问题,建议用函数写,简单。
类似的还有习题P112T3、T6、T7(试着写一下这几个题)。
注意:
数学中:
1≦x≦3,而在C中,要这样:
1<=x&&x<=3。
要注意格式写的时候很容易写错。
4、do……while类型
执行过程:
先无条件的执行循环体,然后判断循环条件是否成立,与while型相反。
所以do……while型无论如何至少执行一次循环。
inti=1;//设变量i的初值为1
do
{
printf(“%d\n”,i++);
}while(i<=100);//当i小于或者等于100时,继续执行循环体,注意while后的分号,不要忘了。
例:
用do……while计算1+2+3+4+…+100的和。
(先画图)
#include
intmain()
{
inti=1,sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf(“sum=%d\n”,sum);
return0;
}
5、for循环语句
for(表达式1;表达式2;表达式3)
语句
表达式1:
设置初始条件,只执行一次。
可以设置零个,一个多个。
表达式2:
循环条件表达式,用来判定是否继续循环。
在每次执行循环体前先执行此表达式。
表达式3:
作为循环调整,例如使循环变量增值,它是在执行完循环体后才执行的。
例题可以把例题4改编。
6、输出4*5矩阵(利用循环嵌套来解决)//说实话这个程序我不明白什么意思
12345
246810
3691215
48121620
#include
intmain()
{
inti,j,n=0;
for(i=1;i<=4;i++)
{
for(j=1;j<=5;j++,n++)
{
if(n%5==0)
{
printf(“\n”);//这四行的意思是让这些数每五个换行
}
printf(“%d\t”,i*j);
}
}
printf(“\n”);
return0;
}
7、利用数组处理批量数据
形式为:
类型符数组名[常量表达式];
说明:
1)方括号里要指定数组长度(常量表达式)。
2)注意,数组下标是从0开始的,例如指定数组a[3],则着3个数分别是a[0]、a[1]、a[2],不存在a[3]元素。
3)常量表达式中可以包括常量和符号常量,如:
“inta[3+5];”,不能包含变量,如:
“a[n]”,是不合法的。
数组的初始化:
在定义数组时可以对数组全部赋予初值,例如inta[3]={1,4,68};;也可以只给部分赋初值,系统会自动给后面的元素赋初值0,例如inta[4]={2,4};;也可不指定数组长度,如inta[4]={1,4,6,7};也可以写成inta[]={1,4,6,7};
例1:
对10个数组元素依次赋值0~9,要求逆序输出这10个元素。
#include
intmain()
{
inti,a[10];
for(i=0;i<=9;i++)
{
a[i]=i;
}
for(i=9;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
return0;
}
例2:
(冒泡法排序)任意输入10个数,按照从小到大的顺序输出。
#include
intmain()
{
inti,j,t;
printf(“Pleaseinput10numbers:
\n”);
for(i<0;i<10;i++)
{
scanf(“%d”,&a[i]);
}
printf(“\n”);
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf(“Thesortednumbers:
\n”);
for(i=0;i<10;i++)
{
printf(“%d”,a[i]);
}
printf(“\n”);
return0;
}
二维数组:
定义类型说明符数组名[常量表达式][常量表达式];如:
floata[3][5];
二维数组与一维数组类似,注意的地方参照一维数组。
例3:
将一个二维数组行和列的元素互换,存到另一个二维数组中。
(这个是我们去年的考试题)
#include
intmain()
{
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2],i,j;
printf(“arraya:
\n”);
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf(“%5d”,a[i][j]);//输出a数组
b[j]][i]=a[i]][j];//将a数组的元素赋值给b数组
}
printf(“\n”);
}
printf(“arrayb:
\n”);
for(i=0;i<=2;i++)//输出b数组
{
for(j=0;j<=1;j++)
{
printf(“%5d”,b[i][j]);
}
printf(“\n”);
}
return0;
}
例4:
(打擂台算法)有一个3X3矩阵,要求编写程序,输出矩阵中的最大值。
(书上是3X4矩阵,会一个,不管几X几矩阵就都会了)
#include
voidmain()
{
intnum[3][3],row,col,i,j,max;
row=0;
col=0;
max=num[0][0];
printf("请输入九个数:
");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&num[i][j]);//存储输入的数据
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d",num[i][j]);//输出输入的数据,可以不要
//printf("\n");
}
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(num[i][j]>max)
{
max=num[i][j];//重点,这个地方是找数组中的最大值
row=i;
col=j;
}
}
}
printf("max=%d\nrow=%d,col=%d\n",max,row,col);//输出最大及行列
}
例5:
输入10个数,然后随意输入一个数查找是否存在此数。
#include
intmain()
{
intnum[10],i;
printf("请输入十个数:
");
for(i=0;i<=9;i++)
{
scanf("%d",&num[i]);//存储输入的10个数
}
for(i=0;i<=9;i++)
{
printf("%d\n",num[i]);//打印出输入的10个数
}
intnum1;
printf("请输入要查找的数:
");
scanf("%d",&num1);
for(i=0;i<=9;i++)
{
if(num[i]-num1==0)//查找某个数
{
break;
}
}
if(i>9)
{
printf("没有找到该数!
\n");
}
else
{
printf("在数组中第%d个位置找到了要查找的数%d\n",i+1,num1);
}
}
例6:
定义一个长度为5的数组,输入数并存储,然后在输入一个数,要求这个数插在原数组中,顺序重新排列。
#include
intmain()
{
intnum[6],i;
printf("请输入5个数:
");
for(i=0;i<5;i++)
{
scanf("%d",&num[i]);
}
for(i=0;i<5;i++)
{
printf("%d\n",num[i]);
}
intn,j;
printf("请输入要插入的数:
");
scanf("%d",&n);
for(i=0;i<5;i++)
{
if(n { break; } } for(j=5;j>i;j--) { num[j]=num[j-1]; } num[i]=n; for(i=0;i<6;i++) { printf("%d\n",num[i]); } } 8、用函数实现模块化程序设计。 1)定义函数: A.定义无参函数 类型名函数名() { 函数体 } B.定义有参函数 类型名函数名(形式参数表列) { 函数体 } 例如: intmax(intx,inty) { intz; z=x>y? x: y;//这句的意思是x和y中大的值赋给z. return(z); } C.定义空函数 类型名函数名() { } 2)例1: 编写一个函数,要求输入两个数,输出较大的那个数值。 //先编写max函数: intmax(intx,inty) { intz; z=x>y? x: y;//这句的意思是x和y中大的值赋给z. return(z); } //再编写主函数: #include intmain() { intmax(inta,intb);//声明max函数 inta,b,c; printf(“Pleaseinputtowintegernumbers: \n”); scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“maxis%d\n”,c); } 3)例: 2: 输入两个数,求和,用函数。 (浮点型) 参照例1自己写一下,基本上一样了。 4)例3: 用函数来判断某一年是否是闰年。 #include voidmain() { voidrunnian(int);//声明函数 intyear; printf("请输入年份"); scanf("%d",&year); runnian(year);//括号里须是前面输入的年份 } voidrunnian(inty) { if((y%4! =0&&y%100! =0)||(y%400! =0))//判断是否是闰年 { printf("%d是闰年\n",y); }else { printf("%d是平年\n",y); } } 5)例4: 输入两个数,用函数来求和。 //主体 #include intmain() { floatadd(floatx,floaty); floata,b,c; printf(“Pleaseentertwonumbers: \n”); scanf(“%f,%f”,&a,&b);//是%f不是%d,数据类型换了 c=add(a,b); printf(“sumis%d\n”,c); return0; } //函数部分 floatadd(floatx,floaty) { floatz; z=x+y; return(z); } 6)例5: 输入十个数,要求用函数输出其中最大的值和该数是第几个。 (考察点: 函数数组) #include intmain() { intmax(intx,inty); inta[10],m,n,i; printf(“Pleaseenter10numbers: \n”); for(i=0;i<10;i++) { scanf(“%d”,&a[10]); } printf(“\n”); for(i=1,m=a[0],n=0;i<10;i++;) { if(max(m,a[i])>m) { m=max(m,a[i]); n=i; } } printf(“Thelargestnumberis%d\nitisthe%dthnumber\n”,m,n+1); } //函数部分 intmax(intx,inty) { return(x>y? x: y); } 7)例6: (选择法)对数组中的10个数排序。 (函数) #include intmain() { voidsort(intarray[],intn); inta[10],i; printf(“Pleaseenterarray: \n”); for(i=0;I<10;i++) { scanf(“%d”,&array[i]); } sort(a,10); printf(“Thesortedarray: \n”); for(i=0;i<10;i++) { printf(“%d”,a[i]); } printf(“\n”); return0; } //函数部分 voidsort(intarray[],intn) { inti,j,k,t; for(i=0;i { k=i; for(j=i+1;j { if(array[j] { k=j; t=array[k]; array[k]=array[i]; array[i]=t; } } } 8)例7: 有一个3×4矩阵,求所有元素中的最大值。 (前面那个打擂台算法的题一样,就是换了种形式) #include intmain() { intmax_value(intarray[][4]);//二维数组函数 inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};//数组初始化 printf(“Maxvalueis%d\n”,max_value): //直接把函数写到输出了 return0; } //函数部分 intmax_value(intarray[][4]) { inti,j,max; max=array[0][0]; for(i=0;i<3;i++) { for(j=0;j<4;j++) { if(array[i][j]>max) { max=array[i][j]; } return0; } } } 问题: 如果这个程序要体现其可持续发展性(二维数组不是直接赋值,而是键盘敲入),那么这个程序该怎么改? 编者的话 本复习资料都是本人亲手整理的,程序代码都是一个一个字母敲入的,希望使用者认真领悟复习。 程序没有很详细的讲解,自己多领悟吧,掺杂着很多小的知识
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 例题
![提示](https://static.bdocx.com/images/bang_tan.gif)