C语言基础代码.docx
《C语言基础代码.docx》由会员分享,可在线阅读,更多相关《C语言基础代码.docx(15页珍藏版)》请在冰点文库上搜索。
![C语言基础代码.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/51267962-9978-4704-af2c-fe12e4a07ad8/51267962-9978-4704-af2c-fe12e4a07ad81.gif)
C语言基础代码
C基础
1、输入成绩,判断是否及格
#include
voidmain()
{
floata,b,max;printf("pleaseentera:
");
scanf("%f",&a);
if(a>=60)
printf("及格\n");
elseprintf("不及格\n");
}
2、输入两个学生a和b的成绩,输出其中高的成绩#include
voidmain()
{
floata,b,max;printf("pleaseenteraandb:
");
scanf("%f,%f",&a,&b);//数据输入时若无逗号一般用空格区分两输入值,本例一定要在两数之间加逗号
if(a>=b)max=a;
if(b>a)
max=b;printf("max=%f\n",max);
}
3、要求按照百分制考试分数输出等级。
#include"stdio.h"
main()
{intgrade;printf("inputgrade=");scanf("%d",&grade);switch((int)(grade/10))
{case10:
case9:
printf("A\n");
break;
case8:
printf("B\n");
break;
case7:
printf("C\n");
break;
case6:
printf("D\n");
break;
default:
printf("E\n");
}
4、求1+2+⋯⋯+100的和,分别用while、do⋯while和for语句实现
(1)while
#include
voidmain()
{intsum=0,i=1;
while(i<=100)
{sum=sum+i;i++;
}
printf("sum=%d\n",sum);
}
(2)do⋯while
#includevoidmain()
{
intsum=0,i=1;
do
{sum=sum+i;
i++;
}while(i<=100);
printf("sum=%d\n",sum);
}
(3)for
#include
voidmain()
{
intsum=0,i;
for(i=1;i<=100;i++)sum=sum+i;
printf("sum=%d\n",sum);
}
5、输入10个数,用冒泡法对这10个数由小到大排序。
#includevoidmain()
{inta[10];
inti,j,t;
printf("input10numbers:
n");
for(i=0;i<10;i++)//数组输入
printf("n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
scanf("%d",&a[i]);
/*进行9次循环,实现9趟比较*//*在每趟中进行9-j次比较*//*相邻两个数进行比较*/
{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");
}
6、选择排序
#includevoidmain()
{
inti,j,min,temp;
//为数组赋初值
inta[10]={6,90,45,56,1,15,44,78,58,101};//或键盘输入
/*printf("enterdata:
\n");
for(i=0;i<10;i++)//输入10个数
{
printf("a[%d]=",i);scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<10;i++)//输出10个数
{printf("%5d",a[i]);
}printf("\n");
*/
for(i=0;i<9;i++)
{
min=i;
for(j=i+1;j<=9;j++)
{
if(a[min]>a[j])min=j;
}
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("\nThesortednumbers:
\n");
for(i=0;i<10;i++)//输出排序后的10个数
{
printf("%5d",a[i]);
}
printf("\n");
getchar();
}
strcat
7、//编一程序,将两个字符串连接起来。
不要用函数
#include"stdio.h"
voidmain()
{
chars1[80],s2[40];
inti=0,j=0;
printf("\ninputstring1:
");
scanf("%s",s1);
printf("inputstring2:
");
scanf("%s",s2);
while(s1[i]!
='\0')
i++;
while(s2[j]!
='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("Thenewstringis:
%s\n",s1);
}
8、函数1:
(参数为值传递)
#include
voidmain()
{intmax(intx,inty);
inta,b,c;scanf("%d%d",&a,&b);
c=max(a,b);
printf(“ma%x=n”,c);
}
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
returnz;
}
9、函数2:
(参数为地址传递)
有有一维数组score,内放10个学生成绩,定义函数average求平均成绩。
#includevoidmain()
{floataverage(floatarray[10]);
floatscore[10],aver;
inti;
printf("input10scores:
\n");
for(i=0;i<10;i++)scanf("%f",&score[i]);
printf("\n");aver=average(score);
printf("averagescoreis%5.2f\n",aver);
}
floataverage(floatarray[10])
{inti;
floataver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i];
aver=sum/10;return(aver);
}
10、对输入的两个整数按大小顺序输出,用指针变量作函数的参数。
(地址传递)
#include
voidmain()
{voidswap(int*p1,int*p2);
inta,b;
int*pointer_1,*pointer_2;
scanf("%d%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a
printf("%d,%d\n",*pointer_1,*pointer_2);
}
voidswap(int*p1,int*p2)
{inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
11、有一整型数组a,有10个元素。
要输出各元素的值有三种方法
(1)下标法#includevoidmain()
{inta[10];
inti;
for(i=0;i<10;i++)scanf("%d",&a[i]);
for(i=0;i<10;i++)printf("%d",a[i]);
printf("\n");
}
(2)通过数组名计算出数组元素的地址,找出数组元素的值。
#include
voidmain()
{inta[10];
inti;
for(i=0;i<10;i++)
scanf("%d",&a[i]);for(i=0;i<10;i++)
printf("%d",*(a+i));
printf("\n");
}
⑶用指针变量指向数组元素
#include
voidmain()
{inta[10];
int*p,i;
for(i=0;i<10;i++)scanf("%d",&a[i]);
for(p=a;p<(a+10);p++)
printf("%d",*p);
printf("\n");
}
上述3种方法中有关数组元素的输入也可用下列方法表示:
for(p=a;p12、输入两个学生学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩。
#includevoidmain()
{structstudent
{intnum;
charname[20];
intscore;
}s1,s2;
scanf("%d%s%d",&s1.num,s1.name,&s1.score);
scanf("%d%s%d",&s2.num,s2.name,&s2.score);
printf("numname
score\n");
if(s1.score>=s2.score)
printf("%d
%s
%d\n",s1.num,s1.name,s1.score);
else
printf("%d
%s
%d",s2.num,s2.name,s2.score);
}
13、有N个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序存储并输出各学生的信息。
#include
#include
voidmain()
{structstudent
{intnum;
charname[20];
intscore;
}s[6]={{1,"aaa",59},{2,"bbb",78},{3,"ccc",85},{4,"ddd",64},{5,"eee",98},{6,"fff",83}};
inti,j,max,temp;
chartemp_name[20];
for(i=0;i<6;i++)
{max=i;
for(j=i+1;j<=5;j++)
{if(s[max].score
max=j;
}
/*temp_stu=s[i];
s[i]=s[max];
s[max]=temp_stu;*/
temp=s[i].num;
s[i].num=s[max].num;
s[max].num=temp;
strcpy(temp_name,s[i].name);
strcpy(s[i].name,s[max].name);
strcpy(s[max].name,temp_name);
temp=s[i].score;
s[i].score=s[max].score;
s[max].score=temp;
}
printf("numnamescore\n");
for(i=0;i<6;i++)
printf("%d%s%d\n",s[i].num,s[i].name,s[i].score);
}
14、从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
#include
#defineSIZE4
structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidmain()
{voidsave();
inti;
for(i=0;iscanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr);save();
}
voidsave()
{FILE*fp;
inti;
if((fp=fopen("stu-list","wb"))==NULL)
{printf("cannotopenfile\n");
return;}for(i=0;iif(fwrite(&stud[i],sizeof(structstudent_type),1,fp)!
=1)printf(“filewriteerrno”r);/*出错*/fclose(fp);/*关闭文件*/
}
15、将以上数据读出并显示#include
#defineSIZE4structstudent_type
{charname[10];
intnum;
intage;
charaddr[15];
}stud[SIZE];
voidmain()
{inti;
FILE*fp;
if((fp=fopen("stu_list","rb"))==NULL)
{printf("cannotopenfile\n");return;
}for(i=0;i{fread(&stud[i],sizeof(structstudent_type),1,fp);
printf("%-10s%4d%4d%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);}
fclose(fp);
}
16、//有15个数按照从小到大的顺序存放在一个数组中。
输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
如果该数不在数组中,输出“不在表中”
#include"stdio.h"
#defineN15
voidmain()
{inti,number,top,bott,mid,loca,flag=1,sign;
inta[N]={1,3,4,5,6,8,12,23,34,44,45,56,57,58,68};
charc;
for(i=0;iprintf("%d",a[i]);
printf("\n");
while(flag)
{printf("inputnumbertolookfor:
");scanf("%d",&number);
getchar();
sign=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((!
sign)&&(top<=bott))
{mid=(bott+top)/2;
if(number==a[mid])
{loca=mid;
position
printf("Hasfound%d,itsis%d\n",number,loca+1);
sign=1;
}
elseif(numberbott=mid-1;
else
top=mid+1;
}
if(!
sign||loca==-1)
printf("cannotfind%d.\n",number);
printf("continueornot(Y/N)?
");scanf("%c",&c);
getchar();
if(c=='N'||c=='n')
flag=0;
}
6
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
7
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
1
3
4
5
6
8
12
23
34
44
45
56
57
58
68
区分:
break语句跳出循环,用continue语句结束本次循环
(1)break:
判断整数m是否素数
#include
#includevoidmain()
{intm,i,k;printf("输入一个整数:
");scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;
if(i>=k+1)
printf("%d是一个素数。
\n",m);
elseprintf("%d不是一个素数。
\n",m);
}
(2)写出以下程序运行结果
voidmain()
{
intj;
for(j=1;j<=5;j++)
{if(j%2==1)printf(“D”);
elsecontinue;
printf(“B”);
}
printf(“P\n”);
}答案:
DBDBDBP