1、黑龙江大学计算机学院、软件学院 《程序设计基础》实验讲义
C 基 础
1、输入成绩,判断是否及格
#include 2、tdio.h>
void main()
{
float a,b,max;
printf("please enter a and b:");
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()
{ i 3、nt grade;
printf("input grade=");
scanf("%d",&grade);
switch ((int)(grade/10))
{ case 10:
case 9: printf("A\n"); break;
case 8: printf("B\n"); break;
case 7: printf("C\n"); break;
case 6: printf("D\n") 4、 break;
default: printf("E\n");
}
}
4、求1+2+……+100的和,分别用while、do…while和for语句实现
(1)while
#include 5、
printf("sum=%d\n",sum);
}
(2)do…while
#include 6、 sum=sum+i;
printf("sum=%d\n",sum);
}
5、输入10个数,用冒泡法对这10个数由小到大排序。
#include 7、/*进行9次循环,实现9趟比较*/
for(i=0;i<9-j;i++) /*在每趟中进行9-j次比较*/
if (a[i]>a[i+1]) /*相邻两个数进行比较*/
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
} /*满足条件进行互换*/
printf("t 8、he sorted numbers :\n");
for(i=0;i<10;i++) //数组输出
printf("%d ",a[i]);
printf("\n");
}
6、选择排序
#include 9、
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;
10、}
printf("\n The sorted numbers:\n");
for(i=0;i<10;i++)//输出排序后的10个数
{
printf("%5d",a[i]);
}
printf("\n");
getchar();
}
7、//编一程序,将两个字符串连接起来。不要用函数strcat
#include "stdio.h"
void main()
{
char s1[80],s2[40];
int i=0,j=0;
printf("\n input string1:");
scanf("%s",s1);
11、printf("input string2:");
scanf("%s",s2);
while(s1[i]!='\0')
i++;
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';
printf("The new string is: %s\n",s1);
}
8、函数1:(参数为值传递)
#include 12、t a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf(“max= %d\n”,c);
}
int max (int x,int y)
{ int z;
if (x>y) z=x;
else z=y;
return z;
}
9、函数2:(参数为地址传递)
有有一维数组score,内放10个学生成绩,定义函数average求平均成绩。
#incl 13、ude 14、average(float array[10])
{ int i;
float aver, sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
10、对输入的两个整数按大小顺序输出,用指针变量作函数的参数。(地址传递)
#include 15、
int *pointer_1, *pointer_2;
scanf("%d%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a 16、 *p2=temp;
}
11、有一整型数组a,有10个元素。要输出各元素的值有三种方法
(1)下标法
#include 17、 int a[10];
int i;
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d ", *(a+i));
printf("\n");
}
⑶ 用指针变量指向数组元素
#include 18、nf("%d",&a[i]);
for(p=a;p<(a+10);p++)
printf("%d ",*p);
printf("\n");
}
上述3种方法中有关数组元素的输入也可用下列方法表示:
for(p=a;p
void main()
{ struct student
{ int n 19、um;
char name[20];
int score;
}s1,s2;
scanf("%d%s%d",&s1.num,s1.name,&s1.score);
scanf("%d%s%d",&s2.num,s2.name,&s2.score);
printf("num name score\n");
if(s1.score>=s2.score)
printf("%d %s %d\n",s1.num,s1.name,s1.score);
else
pr 20、intf("%d %s %d",s2.num,s2.name,s2.score);
}
13、有N个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序存储并输出各学生的信息。
#include 21、"eee",98},{6,"fff",83}};
int i,j,max,temp;
char temp_name[20];
for(i=0;i<6;i++)
{ max=i;
for(j=i+1;j<=5;j++)
{ if(s[max].score 22、m=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("num name score\n");
for(i=0;i<6;i++)
printf("%d %s %d\n",s[i].num,s[i].nam 23、e,s[i].score);
}
14、从键盘输入4个学生的有关数据,然后把它们转存到磁盘文件上去。
#include 24、[i].name,&stud[i].num, &stud[i].age, stud[i].addr);
save( );
}
void save( )
{ FILE *fp;
int i;
if((fp=fopen("stu-list","wb"))==NULL)
{ printf("cannot open file\n");
return;}
for(i=0;i 25、 printf(“file write error\n”);/*出错*/
fclose(fp); /*关闭文件*/
}
15、将以上数据读出并显示
#include 26、"rb"))==NULL)
{ printf("cannot open file\n");
return;
}
for(i=0;i 27、的顺序存放在一个数组中。输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,输出“不在表中”
#include "stdio.h"
#define N 15
void main()
{ int i,number,top,bott,mid,loca,flag=1,sign;
int a[N]={1,3,4,5,6,8,12,23,34,44,45,56,57,58,68};
char c;
for(i=0;i 28、 printf("input number to look for:");
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;
printf("Has found %d, its position






