6.1    下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。
#include<stdio.h>
#include <string.h>
int main()
{
    char score[100];
    int flag = 0, i, s;
    char grade;
    printf("Please input score:\n");
    while (1)
    {
        flag=0;
        scanf("%s", score);
        for (i = 0; i < strlen(score); i++)
        {
            if (score[i] >= '0' && score[i] <= '9')
            {
                continue;
            }
            else
            {
                flag = 1;
                break;
            }
        }
        s = atoi(score);
        if (s < 0 || s > 100 || flag == 1)
        {
            printf("Input error!\n");
            printf("Please input score:\n");
            continue;
        }
        else{
            break;
        }
    }
    s = atoi(score);
    if (s >= 90)
    {
        grade = 'A';
    }
    else if (s >= 80)
    {
        grade = 'B';
    }
    else if (s >= 70)
    {
        grade = 'C';
    }
    else if (s >= 60)
    {
        grade = 'D';
    }
    else
    {
        grade = 'E';
    }
    printf("grade: %c\n", grade);
    return 0;
}
6.2    编程计算a+aa+aaa+…+aa…a(n个a)的值(4分)
题目内容:
编程计算 a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。
#include<stdio.h>
#include<math.h>
int main()
{
    int n,a,i,j;
    double p=0,q=0;
    printf("Input a,n:\n");
    scanf( "%d,%d",&a,&n);
    for(i=1;i<=n;i++)
    {
        for(j=0,p=0;j<i;j++)
        {
            p=p+a*pow(10,j);
        }
        q=p+q;
    }
    printf("sum=%.0f\n",q);
    return 0;
}
6.3
搬砖问题(4分)
题目内容:
n块砖( 27<n<=77 ),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解,n的值要求从键盘输入。输出结果按照男人数量升序给出(见下面示例3)。
#include "stdio.h"
main()
{
    int a, b, c;
    long n, i, t, s = 0;
    printf("Input n(27<n<=77):\n");
    scanf("%d", &n);
    for (a = 0; 4 * a <= n; a++)
        for (b = 0; 4 * a + 3 * b <= n; b++)
            for (c = 0; 4 * a + 3 * b + c / 2 <= n; c += 2)
                if (4 * a + 3 * b + c / 2 == n && c%2 == 0 && a+b+c==36)
                {
                    printf("men=%d,women=%d,children=%d\n", a, b, c);
                }
}
6.4   
编程输出某年某月有多少天(考虑到闰年)。(5分)
题目内容:
从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。
#include <stdio.h>
int main()
{int year,month,day;
printf("Input year,month:\n");
scanf("%d,%d",&year,&month);
switch(month)
{
case 1: day=31;break;
case 2: day=28;break;
case 3: day=31;break;
case 4: day=30;break;
case 5: day=31;break;
case 6: day=30;break;
case 7: day=31;break;
case 8: day=31;break;
case 9: day=30;break;
case 10: day=31;break;
case 11: day=30;break;
case 12: day=31;break;
default:day=-1;printf("Input error!\n");
}
if((year%4==0&&year%100!=0||year%400==0)&&month==2)  day=29;
if (day!=-1)
printf("%d days\n",day);
return 0;
}
7.1递归法计算游戏人员的年龄(4分)
题目内容:
有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。
递归函数原型:unsigned int ComputeAge(unsigned int n);
提示:
计算年龄的递归公式为:
#include <stdio.h>
unsigned int ComputeAge(unsigned int n){
}
main()
{
    int i, j, k, s = 23, n, c, age;
    scanf("%d", &n);
    printf("The person's age is %u\n",8+2*n);
}
7.2递归法计算两个数的最大公约数(4分)
题目内容:
利用最大公约数的性质计算。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为: 
性质1  如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b)
性质2  如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a)
性质3  如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b
    #includescanf输入整型数组 <stdio.h>
int gys(int a,int b)
{
    int r;
    r=a%b;
    if(r==0) return b;
    else return gys(b,r);
}
main()
{
    printf("Input a,b:");
    int a,b;
    scanf("%d,%d", &a,&b);
    if (a<=0 || b<=0){
        printf("Input error!\n");
    }
    else
        printf("%d\n",gys(a,b));
}
7.3    寻中位数v1.0(4分)
题目内容:
编写一个函数返回三个整数中的中间数。函数原型为: int mid(int a, int b, int c); 
函数功能是返回abc三数中大小位于中间的那个数。
输入格式: "%d%d%d"
输出格式:"The result is %d\n"
输入样例1:
12 6 18
输出样例1:
The_result_is_12
输入样例2:
-9 7 -2
输出样例2:
The_result_is_-2
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。