C语言实验报告

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 分)

英文辅音字母是除AEIOU以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。

#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;
}
设计思路:通过对结构体数组的遍历实现对每一个元素排等级(grade),并且通过计数器cnt判断等级D的元素数量。
 
posted @ 2018-01-28 14:59  黄靖涛  阅读(833)  评论(0编辑  收藏  举报