教材习题怎么这么多道
Description
编写一个函数,计算一个整数的所有数字之和
#include "stdio.h"
int sum(int n)
{
_______________________
}
main()
{
int n;
scanf("%d", &n);
printf("%d", sum(n));
}
输入格式
由键盘输入一个整数
输出格式
输出该数各位数字之和
输入样例
123
输出样例
6
代码如下:
#include
#include
int sum(int n)
{
int num = 0,a=0;
do
{
a=n%10;
n=n/10;
num = num+a;
}while(n%10!=0);
return num;
}
main()
{
int n;
scanf("%d", &n);
printf("%d", sum(n));
}
Description
编写一个函数,挑选一个字符串中的所有元音字母构成并返回一个新的字符串
#include "stdio.h"
void yuan(char *s,char *s2)
{
_______________________
}
main()
{
char str[81], str2[81];
gets(str);
yuan(str,str2);
printf("%s", str2);
}
输入格式
由键盘输入一行字符,以’\n’结束
输出格式
输出新构成的字符串
输入样例
I am good
输出样例
Iaoo
提示
元音字母有a、e、i、o、u,这5个元音字母,大写或小写
代码如下:
#include "stdio.h"
void yuan(char *s,char *s2)
{
while(*s!='\0')
{
if(*s=='a'||*s=='e'||*s=='i'||*s=='o'||*s=='u'
||*s=='A'||*s=='E'||*s=='I'||*s=='O'||*s=='U')
{
*s2 = *s;
s2++;
}
s++;
}
*s2='\0';//字符串的末尾一定要有斜杠零
}
main()
{
char str[81], str2[81];
gets(str);
yuan(str,str2);
printf("%s", str2);
}
Description
编写一个函数,统计一个字符串中字母、数字和空格的个数。使用全局变量存放字母和数字个数,函数返回值是空格个数
#include
#include
#include
int nL=0, nN=0;
int statistics(char *s)
{
_______________________
}
int main()
{
char s[81];
int nS;
gets(s);
nS = statistics(s);
printf("%d %d %d\n", nL, nN, nS);
return 0;
}
输入格式
输入一行字符,以’\n’符结束
输出格式
统计结果
输入样例
Ab 45
输出样例
2 2 1
代码如下:
#include
#include
#include
int nL=0, nN=0;
int statistics(char *s)
{
int nS = 0;
while(*s!='\0')
{
if(*s==' ')
{
nS++;
}
else if(*s>='0'&&*s<='9')
{
nN++;
}
else if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')
{
nL++;
}
s++;//记得++
}
return nS;
}
int main()
{
char s[81];
int nS;
gets(s);
nS = statistics(s);
printf("%d %d %d\n", nL, nN, nS);
return 0;
}
Description
输入10个整数,编写一个实现对数组进行选择排序的函数
#include
int sort(int a[], int n)
{
int i,j,k,tmp;
for(i=0;i<n-1; i++)
{
k=i;
for(_______________________)
if(_______________________) k=j;
tmp=a[k];a[k]=a[i];a[i]=tmp;
}
}
int main()
{
int a[10];
int i;
for(i=0; i<10; i++) scanf("%d", &a[i]);
sort(a,10);
for(i=0; i<10; i++) printf("%d\n", a[i]);
return 0;
}
输入格式
10个整数,以空格分隔
输出格式
排序后的10个整数,一行一个数字
输入样例
3 2 1 6 5 4 9 8 7 0
输出样例
0
1
2
3
4
5
6
7
8
9
代码如下:
#include
int sort(int a[], int n)
{
int i,j,k,tmp;
for(i=0;i<n-1; i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]<a[k]) k=j;//可以把最小值赋给a[k]
tmp=a[k];a[k]=a[i];a[i]=tmp;//小的放在左边
}
}
int main()
{
int a[10];
int i;
for(i=0; i<10; i++) scanf("%d", &a[i]);
sort(a,10);
for(i=0; i<10; i++) printf("%d\n", a[i]);
return 0;
}
Description
输入正整数x和n,编写递归函数求x的n次方。
#include
int F(int x, int n)
{
if(_______________________) return _______________________;
else return _______________________;
}
int main()
{
int x, n;
scanf("%d%d", &x, &n);
printf("%d", F(x, n));
return 0;
}
输入格式
两个正整数,x和n
输出格式
x的n次方,假定结果不会超过10的次方。
输入样例
5 2
输出样例
25
代码如下:
#include
int F(int x,int n)
{
if(x==1||n==1)
return x;
else
return F(x,n-1)*x;
}
int main()
{
int x, n;
scanf("%d%d",&x,&n);
printf("%d",F(x,n));
return 0;
}
Description
输入一个4*4矩阵,编写两个函数分别实现对二维数组元素的行与行进行交换,以及列与列进行交换
#include
void swap(int *a, int *b)
{
int temp;
temp=*a;*a=*b;*b=temp;
}
void col(int a[][4], int i, int j)
{
_______________________
}
void row(int a[][4], int i, int j)
{
_______________________
}
int main()
{
int a[4][4];
int i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
scanf("%d", &a[i][j]);
col(a,0,2);
row(a,0,2);
col(a,1,3);
row(a,1,3);
col(a,0,3);
row(a,0,3);
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
输入格式
输入一个4*4矩阵
输出格式
输出经过变换的矩阵
输入样例
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出样例
6 8 5 7
14 16 13 15
2 4 1 3
10 12 9 11
代码如下:
#include
void swap(int *a, int *b)
{
int temp;
temp=*a;*a=*b;*b=temp;
}
void col(int a[][4], int i, int j)
{
int k;
for(k=0; k<4; k++)
swap(&a[k][i], &a[k][j]);
}
void row(int a[][4], int i, int j)
{
int k;
for(k=0; k<4; k++)
swap(&a[i][k], &a[j][k]);
}
int main()
{
int a[4][4];
int i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
scanf("%d", &a[i][j]);
col(a,0,2);
row(a,0,2);
col(a,1,3);
row(a,1,3);
col(a,0,3);
row(a,0,3);
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}
Description
输入10个学生5门课的考试成绩,分别用函数实现以下功能:
(1) 计算一个学生的平均分。
(2) 计算每门课程的平均分。
(3) 找出每门课程的最高分。
显示结果,显示两位小数。
#include
void average(double a[][5], int n)
{
_______________________
}
void average2(double a[][5], int n)
{
_______________________
}
void top(double a[][5], int n)
{
_______________________
}
int main()
{
double a[10][5];
int i, j;
for(i=0; i<10; i++)
for(j=0; j<5; j++)
scanf("%lf", &a[i][j]);
average(a,10);
average2(a,10);
top(a,10);
return 0;
}
输入格式
输入10个学生5门课成绩
输出格式
输出每个学生的平均分,以空格分隔
输出每门课的平均分,以空格分隔
输出每门课的最高分,以空格分隔
输入样例
79 61 57 70 77
67 73 83 72 70
82 59 85 84 80
80 53 67 72 79
80 59 72 92 84
88 72 79 79 80
76 99 82 73 97
67 96 81 69 63
58 80 98 93 84
66 61 64 57 64
输出样例
68.80 73.00 78.00 70.20 77.40 79.60 85.40 75.20 82.60 62.40
74.30 71.30 76.80 76.10 77.80
88.00 99.00 98.00 93.00 97.00
代码如下:
#include
void average(double a[][5], int n) //每个学生平均分
{
int j = 0,i = 0;
for(i=0;i<10;i++)
{
double m = 0.0;//m的值是需要每次更新的
for(j=0;j<5;j++)
{
m = a[i][j] + m;
}
m = m / 5.0;
printf("%.2f ",m);
}
printf("\n");
}
void average2(double a[][5], int n) //每门课程的平均分
{
int j = 0,i = 0;
for(i=0;i<5;i++)
{
double m = 0.0;
for(j=0;j<10;j++)
{
m = a[j][i] + m;
}
m = m / 10.0;
printf("%.2f ",m);
}
printf("\n");
}
void top(double a[][5], int n) //每门课程的最高分
{
int j = 0,i = 0;
double max = 0;
for(i=0;i<5;i++)
{
max = a[j][i];
for(j=0;j<10;j++)
{
if(a[j][i]>max)
{
max = a[j][i];
}
}
printf("%.2f ",max);
}
printf("\n");
}
int main()
{
double a[10][5];
int i, j;
for(i=0; i<10; i++)
for(j=0; j<5; j++)
scanf("%lf", &a[i][j]);
average(a,10);
average2(a,10);
top(a,10);
return 0;
}