PTA:C课程设计

Posted 徐徐同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA:C课程设计相关的知识,希望对你有一定的参考价值。

山东大学(威海)2022级大一下C习题集(1)

1-7-1 求幂级数展开的部分和

#include<stdio.h>
#include<math.h>
int main()

    double x = 0;
    scanf("%lf",&x);
    double add = 1.0,sum = 1.0;
    int i = 1;
    for(i = 1;;i++)
    
        add=(add*x)/i;
        sum+=add;
        if(add<0.00001)
      		 break;
    
    printf("%.4lf",sum);
    return 0;

1-7-2 查询水果价格

#include<stdio.h>
void menu()

    printf("[1] apple\\n[2] pear\\n[3] orange\\n[4] grape\\n[0] exit\\n");


int main()

    menu();
    int c = 0, n;
    while(++c<6)
    
        scanf("%d",&n);
        if(n == 0)
            break;
        
        switch(n)
        
            case 1:printf("price = 3.00\\n");
                    break;
            case 2:printf("price = 2.50\\n");
                    break;
            case 3:printf("price = 4.10\\n");
                    break;
            case 4:printf("price = 10.20\\n");
                    break;
            default:printf("price = 0.00\\n");
                    break;
        
    
    return 0;

1-7-3 猜数字游戏

#include<stdio.h>
int main()

   int rad1, N;
   scanf("%d%d", &rad1, &N);
    int gs = 0;
   if(rad1>0&&rad1<=100&&N>3)
    
         
         for(int i = 0;i<N;i++)
         
             scanf("%d", &gs);
             if (gs <= 0)
             
                   printf("Game Over");
                   return 0;
             
        else if (gs < rad1)
                printf("Too small\\n");
        else if(gs>rad1)
                printf("Too big\\n");
        else if(gs==rad1&&i == 0)
            
                printf("Bingo!\\n");
                return 0;
            
            else if(gs == rad1&&(i == 1||i==2))
            
                printf("Lucky You!\\n");
                 return 0;
            
            else if(gs == rad1)
            
                printf("Good Guess!\\n");
                 return 0;
            
        

            printf("Game Over\\n");
            return 0;
      
    

1-7-4 特殊a串数列求和

#include<stdio.h>
int main()

    int a,n;
    scanf("%d%d",&a,&n);
    int s = 0,sum = 0;
    for(int i = 1;i<=n;i++)
    
        s = s*10+a;
        sum += s;
    
    printf("s = %d",sum);

1-7-5 成绩统计分析表

#include<stdio.h>

void Print_s(double i)//把打印*封装成一个函数,方便

     int n = (int)floor(i+0.5);//四舍五入
     for(int j = 0;j<n;j++)
        printf("*");


int main()

    int n;
    scanf("%d", &n);
    double arr[1000] =  0.0 ;
    double sum = 0.0,max = 0.0,min = 1000.0,avg;
    int a=0,b=0,c=0,d=0,e=0;
    for (int i = 0; i < n; i++)
    
        scanf("%lf", &arr[i]);
        sum += arr[i];
        if(arr[i]>max)
            max = arr[i];
        if(arr[i]<min)
            min = arr[i];
        
        if(arr[i]>=90&&arr[i]<=100)
            a++;
        else if(arr[i]>=80&&arr[i]<90)
            b++;
        else if(arr[i]>=70&&arr[i]<80)
            c++;
        else if(arr[i]>=60&&arr[i]<70)
            d++;
        else if(arr[i]>=0&&arr[i]<60)
            e++;
    
    for (int i = 0; i < n; i++)
    
        printf("%03d:%6.1lf ", i+1, arr[i]);
        Print_s(arr[i]);
        printf("\\n");
    
    avg = sum / n;
    printf("\\nMax: %5.1lf ",max);
        Print_s(max);
        printf("\\nMin: %5.1lf ",min);
        Print_s(min);
        printf("\\nAvg: %5.1lf ",avg);
        Print_s(avg);
        printf("\\n");
    
    double A = 100.0*a/n,B=100.0*b/n,C = 100.0*c/n,D = 100.0*d/n,E = 100.0*e/n;
    
    //printf里打印一个百分号“%”要写两个:%%
    printf("\\nA:%6.1lf%%",A);
    printf(" ");
    Print_s(A);
    printf("\\nB:%6.1lf%%",B);
    printf(" ");
    Print_s(B);
    printf("\\nC:%6.1lf%%",C);
    printf(" ");
    Print_s(C);
    printf("\\nD:%6.1lf%%",D);
    printf(" ");
    Print_s(D);
    printf("\\nE:%6.1lf%%",E);
    printf(" ");
    Print_s(E);
    return 0;

1-7-6 换硬币

#include<stdio.h>
int main()

    int x = 0;
    scanf("%d", &x);
    int f5 = 0, f2 = 0, f1 = 0;
    int count = 0;
    for (int i = x/5;; i--)
    
        f5 = i;
        for (int j = (x-5*f5)/2;; j--)
        
            f2 = j;
            f1 = x - 5 * f5 - 2 * f2;
            if (f2 == 0)
             
                break;
            
            if (f1 <= 0)
              
                continue;
            
            printf("fen5:%d, fen2:%d, fen1:%d, total:%d\\n", f5, f2, f1, f1 + f2 + f5);
            count++;
        
        if ((f5 == 1))
        
            printf("count = %d\\n", count);
            break;
        
    
    return 0;

1-7-7 验证“哥德巴赫猜想”

#include<stdio.h>
#include<math.h>
int Prime(long long i)

    int c = 0;
    for(long long int j = 2;j<=sqrt(i);j++)
    
        if(i%j==0)
            return 0;
    
    return 1;


int main()

    long long int n;
    scanf("%lld",&n);
    for(long long int i = 2;i<n;i++)
    
        if(Prime(i)&&Prime(n-i))
        
            printf("%lld = %lld + %lld",n,i,n-i);
            break;
        
        else 
            continue;
    
    return 0;

C博客作业--指针

一、PTA实验作业

题目1:字符串串动变化

1. 本题PTA提交列表

2. 设计思路

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明

一开始写成了这样
小细节导致错误,认真读了一遍代码后解决

题目2:求子串在母串中最后一次出现的地址

1.本题PTA提交列表

2. 设计思路

int i,k=0,flag=0,count=0,count判断是否有子串,flag记录子串出现的下标
for i=0 to s[i]!=\'\\0\'
    k=0
    for j=o to t[k]!=\'\\0\'
        如果s[j]!=t[k] 不为子串的话
            break
    k++
    如果t[k]==\'\\0\'即为子串的话
        flag=i 记下下标
        count=1 存在子串
如果count!=0  存在子串
    t=&s[flag] t为子串在母串中最后一次出现的地址
    return t
否则 return 0

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明

虽说我的代码一遍就过了,但是我觉得代码是错误的,只是题目没有考察到这个点
一开始的代码:
如果s的第一个字符开始就出现子串,还是会返回0. 改正方法:引入count查看是否存在子串

题目3:使用函数实现字符串部分复制

1.本题PTA提交列表

2.设计思路

int i,k=0
for i=m-1 to t[i]!=\'\\0\'从题目给定位置开始遍历
    s[k]=t[i]
    k++
s[k]=\'\\0\'添加字符串结束标志

3.代码截图

4..本题调试过程碰到问题及PTA提交列表情况说明


由于忘记添加字符串结束标志\'\\0\'导致错误,认真的找了一会儿才找到

二、截图本周题目集的PTA最后排名

三、阅读代码

1.


这是吴军霖同学PTA中 删除字符串中的子串的代码。
功能:删除字符串中的子串
好处:

  • 总共用了19行代码,而我这道题用了30行代码,可见他的代码十分简洁
  • 他的代码用一层do-while实现循环查看字符串是否依然存在未删减的子串,一层for寻找子串并删除。删除子串的方式构思巧妙,通过重构母串数组s来达成删除子串的目的。效率较高,占用空间也较小。

2.


这道题是老师上课讲解的,我重新写了一遍。
功能:实现字符串的冒泡排序
好处:

  • 代码量小,我做这道题写了40多行,而这种方法只要27行,代码十分简洁
  • 新增一个头文件string.h,调用库函数strcmp和strcpy,减少代码量的同时,让代码可读性提高很多,看到函数名,就知道要做什么事。而且代码封装成函数来写,使代码明显层次感多了起来,也进一步增加了可读性。

四、本周学习总结

1.自己总结本周学习内容

  • 学习了指针的运用。比如指针偏移: p+i 即能实现。以及指针能够指向字符串即p="abc" 这样。
  • 学习了一个头文件 string.h,该头文件包含了许多字符串处理函数,例如 strcmp函数,功能为比较两个字符串大小,格式为strcmp(str1,str2)即比较str1和str2,要注意返回值,一般情况下str1大于str2为1,等于为0,小于为-1。
    strcpy函数,功能为把一个数组中的字符串复制到另一个数组中去,格式为strcpy(str1,str2)即把str2中内容复制到str1中去。
    strcat函数,功能为连接两个字符串,格式为strcat(str1,str2) ,即将str2连接到str1中。
    strlen函数,功能为计算字符串长度,不包括\'\\0\',格式为strlen(str1) 即计算str1的长度

2.罗列本周一些错题


这道题的第三个空,我会填成j<* n,答案应为j<* n-1,如果像我这么填,数组下标会越界导致错误。太过粗心。

以上是关于PTA:C课程设计的主要内容,如果未能解决你的问题,请参考以下文章

c语言程序设计题,高人来指点一下

C语言课程设计

C语言程序设计感想

C语言课程设计[2023-05-27]

C语言课程设计程序的修改

C语言课程设计"学生信息管理系统设计 "怎么做?