1、(1)编写一个C语言函数,函数名是 print_ day,返回值是void类型,即不需要返回值,参数列表中有一个int类型变量day作为形式参数。函数print_day(()的功能是按照给定的整数变量day,如果day的值为0~6,则相应输出“星期日”至“星期六”到屏幕中。如果day的值不是0~6,则输出“非法数据”。函数 print_ day()不允许从键盘输入数据。
函数print_day()对应的函数原型如下:
void print_day(int day);
(2)编写main()函数并调用函数print_da y()进行测试。
#include<stdio.h>
void print_day(int day);
int main()
{
int day;
printf("请输入一个整数:");
scanf("%d",&day);
print_day(day);
return 0;
}
void print_day(int day)
{
if (day==0)
{
printf("星期日\n");
}
else if(day==1)
{
printf("星期一\n");
}
else if(day==2)
{
printf("星期二\n");
}
else if(day==3)
{
printf("星期三\n");
}
else if(day==4)
{
printf("星期四\n");
}
else if(day==5)
{
printf("星期五\n");
}
else if(day==6)
{
printf("星期六\n");
}
else
{
printf("非法数据");
}
}
运行结果
2、(1)编写一个C语言函数,函数名是divide,返回值是void类型,即不需要返回值,参数列表中有3个int类型变量m、n和scale作为形式参数。
函数divide()的功能是把分数m/n转化为小数输出,即计算m除以n的商,并输出商到屏幕中(只输出商,不输出m或n等无关的内容)。计算结果保留到小数点后scale位,最末位的数使用直接截断的方式,不需要四舍五人。每10个小数位为一组,使用空格分隔。
函数divide()对应的函数原型如下:
void divide (int m, int n, int scale);
(2)编写main()函数,从键盘输入整数m、n和scale并调用函数 divide()进行测试。如果m小于0或者n小于1或者scale小于0,则输出“非法数据”。
#include<stdio.h>
#define N 5
void divide(int m,int n,int scale);
int main()
{
int m,n,opt,scale;
printf("请输入一个分数[m/n]:");
scanf("%d%c%d",&m,&opt,&n);
printf("保留小数位数:");
scanf("%d",&scale);
if((m<0)||(n<1)||(opt!='/')||(scale<0))
{
printf("非法数据");
return -1;
}
printf("%d/%d=",m,n);
divide(m,n,scale) ;
return 0;
}
void divide(int m,int n,int scale)
{
int counter=0;
int i;
printf("%d",m/n);
for(i=1;i<=scale;i++)
{
m=m%n;
m=m*10;
printf("%d",m/n);
counter++;
if(counter%10==0)
{
printf(" ");
}
}
}
运行结果
3、某学校使用等级制评定学生的成绩,原来的百分制按照以下规则转换为等级制:95分及以上评为A;85分及以上评为B;70分及以上评为C;60分及以上评为D;60分以下评为E。
(1)编写一个C语言函数,函数名是to_grade,返回值是char类型,参数列表中有一个 int类型变量score作为形式参数。
函数to_grade()的功能是按照给定的百分制整数分数score计算出相应的等级,并把该等级返回。如果整数变量score不满足条件“0<score<100”,则函数to_grade()返回值是''(即空格)。函数to_grade(()不允许从键盘输人数据,也不允许输出数据到屏幕中。
函数to_grade(()对应的函数原型如下:
char to grade(int score);
(2)编写main(()函数,调用函数to grade()进行测试。
#include<stdio.h>
char to_grade(int score);
int main()
{
int score;
char grade;
printf("请输入一个整数成绩:");
scanf("%d",&score);
grade=to_grade(score);
if(grade!=' ')
{
printf("百分制的%d分对应于等级制的%c。",score,grade);
}
else
{
printf("非法数据");
}
return 0;
}
char to_grade(int score)
{
char grade;
if( (score>100)||(score<0))
{
grade=' ';
}
else if(score>=95)
{
grade='A';
}
else if(score>=85)
{
grade='B';
}
else if(score>=70)
{
grade='C';
}
else if(score>=60)
{
grade='D';
}
else if(score>=0)
{
grade='E';
}
return grade;
}
运行结果
4、(1)编与一个C语言函数,函数名是printnu umber,返回值是int类型,参数列表中有一个int类型变量n作为形式参数。
函数print_number()的功能是按照给定的n值按照从小到大的顺序输出前n个正整数到屏幕中(不输出2的倍数、3的倍数以及5的倍数),每个数使用空格分隔,同时统计所输出整数的个数并作为返回值返回。函数 print_nur nber()不允许从键盘输入数据。
函数print number()对应的函数原型如下:
int print number(int n);
(2)编写main()函数,从键盘输入一个整数n,并调用函数print_number()输出满足条件的整数到屏幕中。最后接收函数 print_nu imber(()的返回值并输出满足条件的整数的个数。
如果键盘输入的整数n小于1,则输出“非法数据”。
#include<stdio.h>
int print_number(int n);
int main()
{
int n;
int count;
printf("请输入一个整数:");
scanf("%d",&n);
if(n<1)
{
printf("非法数据");
return 1;
}
count=print_number(n);
printf("\n满足条件的整数一共有%d个。\n",count);
return 0;
}
int print_number(int n)
{
int count=0;
int i;
for(i=1;i<=n;i++)
{
if((i%2!=0)&&(i%3!=0)&&(i%5!=0))
{
printf("%d ",i);
count++;
}
}
return count;
}
运行结果
5、(1)编写一个C语言函数,函数名是reverse,返回值是void类型,即不需要返回值,参数列表中有一个指向longlong类型的指针变量n作为形式参数。
函数reverse()的功能是按照给定指针变量n所指向的整数计算其对应的逆序整数并保存覆盖原来的值。函数reverse()不允许从键盘输入数据,也不允许输出数据到屏幕中。
函数reverse()对应的函数原型 如下:
void reverse(long long *n);
(2)编写main()函数,从键盘输人一个整数n,并调用函数reverse()把n的值修改为其
对应的逆序整数,最后计算新n值的 2倍并输出结果到屏幕中。
如果键盘输入的n小于1,则输 出“非法数据”。
#include<stdio.h>
void reverse(long long * n);
int main()
{
long long n;
printf("请输入一个整数:");
scanf("%lld",&n);
if(n<1)
{
printf("非法数据");
return 1;
}
reverse(&n);
printf("%lld * 2=%lld",n,n * 2);
return 1;
}
void reverse(long long * n)
{
long long m=0;
long long t=*n;
while(t>0)
{
m=m * 10+t%10;
t=t/10;
}
*n=m;
}
运行结果
6、(1)编写两个C语言函数,即input_numbers()和print_reversed_numbers(),分别对应的函数原型如下:
void input_numbers(int number[],intn);
void print_reversed_numbers(int number[], intr);
函数input_numbers()的功能是输出提示信息 读取键盘输人的n个整数并保存到数
组number中。
函数print_reversed_numbers()的功能是以逆序输出数组number的n个整数到屏幕中。
(2)编写main()函数,先后调用函数input_nun mbers()和print_reversed numbers(),读取键盘输人的n个整数保存到数组number,并以逆序输出数组number的n个整数到屏幕中。
#include<stdio.h>
#define N 5
void input_numbers(int number[],int n);
void print_reversed_numbers(int number[],int n);
int main()
{
int number[N];
input_numbers(number,N);
print_reversed_numbers(number,N);
return 0;
}
void input_numbers(int number[],int n)
{
int i;
printf("请输入%个整数:\n",n);
for(i=0;i<n;i++)
{
printf("第%d个整数:",i+1);
scanf("%d",&number[i]);
}
}
void print_reversed_numbers(int number[],int n)
{
int i;
printf("输出:\n");
for(i=n-1;i>=0;i--)
{
printf("第%d个整数:%d\n",i+1,number[i]);
}
}
运行结果
7、编写C语言程序,从键盘输入三角形3个顶点1 P1、P2和P3的坐标并保存到Point类型的变量中,然后计算三角形的面积,并输出结果到屏幕中。要求所有功能在main()函数中实现,不需要自定义其他函数。
#include<stdio.h>
#include<math.h>
int main()
{
struct point
{
double x;//点x的坐标
double y;//点y的坐标
};
typedef struct point Point;
Point p1;//三角形的顶点p1
Point p2;//三角形的顶点p2
Point p3;//三角形的顶点p3
double a;//三角形的边长a
double b;//三角形的边长b
double c;//三角形的边长c
double s;//三角形的半周长
double area;//三角形的面积
printf("顶点p1的坐标[格式:x,y]:");
scanf("%lf,%lf",&p1.x,&p1.y);
printf("顶点p2的坐标[格式:x,y]:");
scanf("%lf,%lf",&p2.x,&p2.y);
printf("顶点p3的坐标[格式:x,y]:");
scanf("%lf,%lf",&p3.x,&p3.y);
a=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p2.y-p2.y));
b=sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p2.y-p3.y));
c=sqrt((p2.x-p3.x)*(p2.x-p3.x)+(p2.y-p3.y)*(p2.y-p3.y));
s=(a+b+c)/2;
area=sqrt(s *(s-a)*(s-b)*(s-c));
printf("三角形的面积:%f",area);
return 0;
}
运行结果
8、编写C语言程序,从键盘输人代表头的总数量的整数head以及代表腿的总数量的整数 leg,然后计算鸡和兔的数量并保存到Animal类型的变量中,最后输出结果到屏幕中。如果有多个解,则只需输出一个解即可;如果无解,则到输出“本题无解”;如果head小于2或leg小于6,则输出“非法数据”。这里约定鸡和兔的的数量都是不少于一只。要求所有功能在 main()函数中实现,不需要自定义其他函数。
#include<stdio.h>
int main()
{
struct animal
{
int chick;//鸡的数量
int rabbit;//兔的数量
};
typedef struct animal Animal;
Animal animal;
int head;
int leg;
printf("鸡兔同笼,头的总数:");
scanf("%d",&head);
printf("鸡兔同笼,腿的总数:");
scanf("%d",&leg);
if((head<2)||(leg<6))
{
printf("非法数据");
return 1;
}
animal.chick=1;
while(animal.chick<head)
{
animal.rabbit=head-animal.chick;
if(animal.chick * 2+animal.rabbit * 4==leg)
{
break;
}
animal.chick=animal.chick+1;
}
if(animal.chick==head)
{
printf("本题无解");
}
else
{
printf("鸡:%d只,兔:%d只。",animal.chick,animal.rabbit);
}
return 0;
}
运行结果
9、编写C语言程序,从键盘输入一个字母,如果是大写形式的元音字母,则输出信息“是大写形式的元音字母”到屏幕中;如果是小写形式的的元音字母,则输出信息“是小写形式的元音字母”到屏幕中;如果以上都不是,则输出信息“不是元音字母”。
提示:元音字母是A E I O U
#include<stdio.h>
int main()
{
char ch;
printf("请输入一个字母:");
scanf("%c",&ch);
switch(ch)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("字符[%c]是小写形式的元音字母。\n",ch);
break;
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
printf("字符[%c]是大写形式的元音字母。\n",ch);
break;
default:
printf("字符[%c]不是元音字母。\n",ch);
}
return 0;
}
运行结果
10、编写C语言程序,从键盘输入2个整数m和n(使用空格分隔),然后输出m和n之间的所有素数并保存到文本文件prime.txt(以“w”模式打开)。每行1个素数,并统计在区间[m,n]中素数的数量,然后显示到屏幕中。如果整娄数m和n不满足条件“2≤m<n”,则输出“非法数据”到屏幕中。
#include<stdio.h>
#include<math.h>
#define DATA_FILE "prime.txt"
int is_prime(int n);
int main()
{
int m,n,i;
int counter=0;
printf("请输入2个整数[n m]:");
scanf("%d%d",&m,&n);
if((m<2)||(m>n))
{
printf("非法数据");
return 1;
}
FILE *fp=fopen(DATA_FILE,"w");
if(fp==NULL)
{
printf("打开文件%s失败",DATA_FILE);
return 2;
}
for(i=m;i<=n;i++)
{
if(is_prime(i))
{
fprintf(fp,"%d\n",i);
counter++;
}
}
fclose(fp);
printf("保存文件%s成功。\n",DATA_FILE);
printf("区间[%d,%d]的素数有%d个\n",m,n,counter);
return 0;
}
int is_prime(int n)
{
int prime=1;//0:合数;1:素数
int t=sqrt(n);
int i;
for(i=2;i<=t;i++)
{
if(n%i==0)
{
prime=0;
break;
}
}
return prime;
}
运行结果