11-2 求矩阵各行元素之和(15 分)
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
#include <stdio.h>
#define M 10
#define N 10
int main()
{
int a[M][N];
int sum[M];
int m,n,i,j;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
sum[i]=0;
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
sum[i]+=a[i][j];
}
}
for(i=0;i<m;i++)
{
printf("%d\n",sum[i]);
}
return 0;
}
设计思路:通过两个变量i,j来控制行和列,分别计算每一行元素和并存放在数组sum中。
12-1 统计大写辅音字母(15 分)
英文辅音字母是除A
、E
、I
、O
、U
以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。
#include<stdio.h>
int main ()
{
int i,k,count;
char str[80];
count=0;
k=0;
while((str[k]=getchar())!=‘\n‘)
k++;
str[k]=‘\0‘;//添加字符串结束符号
for(i=0;str[i]!=‘\0‘;i++){
if((str[i]>=‘A‘)&&(str[i]<=‘Z‘)&&(str[i]!=‘A‘)&&(str[i]!=‘E‘)&&(str[i]!=‘I‘)&&(str[i]!=‘U‘)&&(str[i]!=‘O‘))
count++;}//循环判断
printf("%d\n",count);
return 0;
}
设计思路:通过循环判断字符串每一个元素是否为大写辅音字母,若不是则计数器count++,循环结束后count的值即为大写辅音字母的个数。
13-1 计算两数的和与差(10 分)
#include <stdio.h>void sum_diff( float op1, float op2, float *psum, float *pdiff );
int main()
{
float a, b, sum, diff;
scanf("%f %f", &a, &b);
sum_diff(a, b, &sum, &diff);
printf("The sum is %.2f\nThe diff is %.2f\n", sum, diff);
return 0;
}
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
float add, sub;
*psum = op1+ op2;
*pdiff = op1- op2;
}
14-3 字符串的连接(15 分)
本题要求实现一个函数,将两个字符串连接起来。
#include <stdio.h>
#include <string.h>
#define MAXS 10
char *str_cat( char *s, char *t );
int main()
{
char *p;
char str1[MAXS+MAXS] = {‘\0‘}, str2[MAXS] = {‘\0‘};
scanf("%s%s", str1, str2);
p = str_cat(str1, str2);
printf("%s\n%s\n", p, str1);
return 0;
}
char *str_cat( char *s, char *t )
{
while(*s!=0)
s++;
while(*t!=0){
*s=*t;
s++;
t++;
}
*s=‘\0‘;
return s;
}
设计思路:通过两个循环实现讲str2的字符逐个加入到str1的末尾并且在循环结束后添加字符串结束符号。
15-6 按等级统计学生成绩(20 分)
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
#include <stdio.h> #define MAXN 10 struct student{ int num; char name[20]; int score; char grade; }; int set_grade( struct student *p, int n ); int main() { struct student stu[MAXN], *ptr; int n, i, count; ptr = stu; scanf("%d\n", &n); for(i = 0; i < n; i++){ scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].score); } count = set_grade(ptr, n); printf("The count for failed (<60): %d\n", count); printf("The grades:\n"); for(i = 0; i < n; i++) printf("%d %s %c\n", stu[i].num, stu[i].name, stu[i].grade); return 0; }
int set_grade( struct student *p, int n )
{
int i,cnt=0;
for(i=0;i<n;i++)
{
if(p->score>=85)p->grade=‘A‘;
if(p->score>=70&&p->score<85)p->grade=‘B‘;
if(p->score>=60&&p->score<70)p->grade=‘C‘;
if(p->score>=0&&p->score<60)
{
p->grade=‘D‘;
cnt++;
}
p++;
}
return cnt;
}