C语言模拟考试

news2024/11/16 3:31:54

目录

  • 函数题
    • 求两个形参的乘积和商
    • 统计专业人数
    • 字符串指定位置插入
    • 求字符串中整数字符之和
  • 编程题
    • 这是一道计算题
    • 买复印纸(误差)
    • 求给定数组元素的最大值
    • 统计数字字符
    • 分段函数求值
    • 逆序的三位数
    • 三天打鱼两天晒网
    • 计算天数
  • 输出个等腰梯形吧
    • 幸运数字
    • 学生的平均成绩
  • 找最长的字符串

函数题

求两个形参的乘积和商

给定函数 fun 的功能是:求两个形参的乘积和商,并通过形参返回调用程序。

函数接口定义:

void fun ( double a, double b, double *x, double *y );

其中 abxy都是用户传入的参数。函数求 ab两个形参的乘积和商并通过形参 xy 返回。

裁判测试程序样例:

#include <stdio.h>

void fun( double a, double b, double *x, double *y );
int main ( )
{ 
	double a, b, c, d;
	scanf ("%lf%lf", &a, &b );
	fun ( a , b, &c, &d ) ;
	printf ("c=%.2f  d=%.2f\n", c, d );
	return 0;
}

/* 请在这里填写答案 */
输入样例:
61.82 12.65
输出样例:
c=782.02 d=4.89

void fun ( double a, double b, double *x, double *y ){
    *x=a*b;
    *y=a/b;
}

统计专业人数

本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:

struct ListNode {
    char code[8];
    struct ListNode *next;
};

这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。

函数接口定义:

int countcs( struct ListNode *head );

其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct ListNode {
    char code[8];
    struct ListNode *next;
};
struct ListNode *createlist(); /*裁判实现,细节不表*/
int countcs( struct ListNode *head );
int main()
{
    struct ListNode  *head;
    head = createlist();
    printf("%d\n", countcs(head));
    
    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例:
1021202
2022310
8102134
1030912
3110203
4021205
#
输出样例:
3

// 第2、3位是专业编号。计算机专业的编号为02。
// 对应索引为1、2
int countcs( struct ListNode *head ){
    int count =0;
    struct ListNode* cur=head;
    while(cur){
        if(cur->code[1]=='0' &&cur->code[2]=='2')
        {
            // printf("%c %c\n",cur->code[1],cur->code[2]);
            count++;
        }
        cur=cur->next;
    }
    return count;
}

字符串指定位置插入

设计函数insert,用指针实现在字符串s1中的指定位置n处插入字符串s2。

函数接口定义:

char* insert(char* s1, char* s2, int n);

其中,s1和s2为两个待处理字符串。n为字符串插入位置。

裁判测试程序样例:

#include <stdio.h>
#include<stdlib.h>
#define Max 100

char* insert(char* s1, char* s2, int n);
int main()
{
    char s1[Max],s2[Max];
    int n;
    scanf("%s", s1);
    scanf("%s", s2);
    scanf("%d", &n);
    char* ss = insert(s1, s2, n);
    printf("%s", ss);
    return 0;
}

/* 请在这里填写答案 */
输入样例:
123456789
1234
7
输出样例:
1234567123489

// 返回s1
char* insert(char* s1, char* s2, int n){
    // 提前将s1保存到temp数组中
    char temp[109]={0};
    int cnt=0;
    for(int i=n;s1[i]!='\0';i++) temp[cnt++]=s1[i];
    int start,i=0;
    for(start=n,i=0;s2[i]!='\0';i++){
        s1[start++]=s2[i];
    }
    
    // 将s1剩余字符接入s1
    for(int i=0;temp[i]!='\0';i++) s1[start++]=temp[i];
        
    s1[start]='\0';
    return s1;
}

求字符串中整数字符之和

本题要求实现一个函数,计算一个字符串中整数字符之和。例如字符串“a2b3@7“中,整数数字字符有 237,所以整数字符之和为 12;例如字符串“xT345y28“中,整数数字字符有34528,所以整数字符之和为 22

函数接口定义:

int sumOfDigit (char *s );

s是指向一个字符串的指针。题目保证数字字符之和不超过int类型表示范围。题目保证字符串中不出现减号-,也就是说本题不用考虑负数。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

int sumOfDigit(char *s);
int main(void)
{
    char s[30];
    gets(s);
    printf("%d", sumOfDigit(s));
    return 0;
}

/* 请在这里填写答案 */
输入样例1:
a2b3@7
输出样例1:
12
输入样例2:
xT345y28
输出样例2:
22
输入样例3:
abcde
输出样例3:
0

int sumOfDigit (char *s ){
    int ans=0;
    for(int i=0;s[i]!='\0';i++){
        if(s[i]>='0' && s[i]<='9') ans =ans+s[i]-'0';
    }
    return ans;
}

编程题

这是一道计算题

对于指定的整数N,计算a_3+a_4+a_5+…+a_n 的值,其中对于任意整数i,
有 a_i = i

输入格式:
输入一个整数N,输入时保证3<N<2.1∗10 ^9
输出格式:
输出一个整数,为计算结果。

输入样例:
5
输出样例:
12
样例解释
3+4+5=12,故输出12

#include <stdio.h>
long long sum=0;
int main()
{
    long long n;
    scanf("%lld",&n);
    // for(int i=3;i<=n;i++) sum+=i;
    sum=(3+n)*(n-2)/2;// 从3 开始少;两项
    printf("%lld",sum);
    
    return 0;
}

买复印纸(误差)

某办公室到年底准备将剩余的办公经费全部用于购买复印纸。请编写程序,输入办公经费的余额和每包复印纸的单价,计算并输出最多可购买多少包复印纸。

输入格式
办公经费余额和复印纸单价
输出格式
可购复印纸的最大数量

输入样例1
660.8 47.2
输出样例1
14
输入样例2
504.9 19.8
输出样例2
25
提示:注意实数的误差。浮点数在内存中是不精确的

// 版本1
#include<stdio.h>
 
int main()
{
    double x,y;
    int z;
    scanf("%lf %lf",&x,&y);
    z=x/y+0.000001;
    printf("%d\n",z);
    return 0;
}
// 版本2
#include <stdio.h>
#include <math.h>

int main()
{
    double x,y;
    double z;
    scanf("%lf %lf",&x,&y);
    z=x/y+0.000001;
    printf("%.0f\n",floor(z));
    return 0;
}

求给定数组元素的最大值

从键盘输入不超过50个非负整数,当输入为负值时,表示输入结束。试编程求出其中的最大值。

输入格式:
在一行中给出不超过50个非负整数(空格分隔),以负数结束。
输出格式:
按输出样例的形式输出其中的最大值,并输出,见样例。

输入样例:
9 0 62 36 15 28 -1
输出样例:
max=62
输入样例:
-1
输出样例:
NULL!

#include <stdio.h>

int main()
{
    int x;
    int max=0;
    while(scanf("%d",&x) && x>=0)
    {
        if(x>max) max=x;
    }
    if(max==0) printf("NULL!");// 只输入了-1
    else printf("max=%d",max);
    return 0;
}

统计数字字符

输入一串字符(中间无空格,字符串最长80),统计其中数字字符0-9各出现多少次,输出出现过的数字(每3个字母占一行)及其出现次数。

输入格式:
字符串
输出格式:
输出出现过的数字(每3个字母占一行)及其出现次数。
例如:
1:2次 3:1次

输入样例1:
12edRRde456123232
输出样例1:
1:2次 2:4次 3:2次
4:1次 5:1次 6:1次
输入样例2:
wewQQFTSerfgs
输出样例2:
10个数字字符都没出现过

#include <bits/stdc++.h>
using namespace std;

int a[10];
int main()
{
    string s;getline(cin,s);
    int flag=0;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        if(s[i]>='0' && s[i]<='9') 
        {
            a[s[i]-'0']++;
            flag=1;// 出现数字
        }
    }
    if(flag)
    {
        int cnt=0;
        for(int i=0;i<10;i++)
        {
            if(a[i])
            {
                cnt++;
                if(cnt==3)
                {
                    printf("%d:%d次 \n",i,a[i]);
                    cnt=0;
                }
                else
                    printf("%d:%d次 ",i,a[i]);
            }
        }
    }
    else
        printf("10个数字字符都没出现过\n");
    return 0;
}

分段函数求值

已知实数x和y的函数关系如下:
f(x)
编程实现,要求输入x的值,计算并输出y的值(输出结果保留小数点后2位)。

输入格式:
输入一个实数x。
输出格式:
输出实数y的值,保留2位小数。

输入样例:
0.5
输出样例:
5.50

#include <stdio.h>
#include <math.h>

int main(){
    double x;scanf("%lf",&x);
    double y;
    if(x<5) y=x+5;
    else if(x>=5 && x<10){
        y=pow(x,2)+0.3*x;
    }
    else
        y=5*x-10;
    printf("%.2f",y);
    return 0;
}

逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。

输入样例:
123
输出样例:
321

#include <stdio.h>

int main(){
    int n;scanf("%d",&n);
    int a=n/100;
    int b=n/10%10;
    int c=n%10;
    printf("%d",c*100+b*10+a);
    return 0;
}

三天打鱼两天晒网

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

输入格式:
输入在一行中给出一个不超过1000的正整数N。
输出格式:
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。

输入样例1:
103
输出样例1:
Fishing in day 103
输入样例2:
34
输出样例2:
Drying in day 34

#include <stdio.h>

// 3-打鱼 5-晒网  10
int main(){
    int n;scanf("%d",&n);
    int temp=n%5;
    if(temp>=1 && temp<=3) 
        printf("Fishing in day %d",n);
    else if(temp>=4 && temp<=5 || temp==0) 
        printf("Drying in day %d",n);
    return 0;
}

计算天数

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。

输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62

#include <stdio.h>

int main(){
    int year,month,day;
    int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    scanf("%d/%d/%d",&year,&month,&day);
    // 判断闰年
    if(year%4==0 && year%100!=0 || year%400==0) months[2]+=1;
    int ans=0;
    for(int i=1;i<month;i++) ans+=months[i];
    ans+=day;
    printf("%d",ans);
    
    return 0;
}

输出个等腰梯形吧

小磊正在研究使用编程输出图形,今天小磊在研究使用特定字符(*符号)输出相应尺寸的等腰梯形。
由于梯形需要上底、下底的长度及位置,还有高度才能确定。所以现在小磊把这个问题简化了。
等腰梯形上底的长度固定为3个字符,然后根据高度H,再来确定下底的字符数。

输入格式:
输入一个正整数H代表梯形的高, 3<= H <= 100
输出格式:
输出等腰梯形,注意,等腰字符梯形的上底固定为3个字符,往下每一行,增加两个字符。
每一行最后一个字符后面直接回车换行,也就是等腰梯形的右侧不需要空格,详见样例。

输入样例:
5
输出样例:

    ***
   *****
  *******
 *********
***********
//上底的长度固定为3个字符
#include <stdio.h>

// 3 5 7 9
int main(){
    int h;scanf("%d",&h);
    int start=3;
    for(int i=0;i<h;i++){// 层数
        // 打印空格h-1个并逐层递减
        for(int j=0;j<h-1-i;j++) printf(" ");
        // 打印*,逐层增加2个
        for(int k=0;k<start;k++) printf("*");
        start+=2;
        printf("\n");
    }
    return 0;
}

幸运数字

越努力越幸运。这年诺诺读初三,3成为她的幸运数字,她光荣地加入了共青团。现在给你一串数字, 请找出其中的幸运数字(出现次数最多的那个数字,若有多个数字的出现次数都是最多,则为最大的那个数字)。

输入格式:
输入一串数字(长度不超过100)。
输出格式:
输出幸运数字。

输入样例:
320243315670920
输出样例:
3

#include <stdio.h>
#include <string.h>

// typedef struct Hash{
//     char ch;
//     int value;
// }H;
int hash[11];
int main(){
    // H h[19];
    char s[109];scanf("%s",s);
    // printf("%s",s);
    for(int i=0;s[i]!='\0';i++){
        hash[s[i]-'0']+=1;
    }
    int i=0;
    int ans=i,max=hash[i];
    for(i=0;i<10;i++){
        if(hash[i]>=max) {
            max=hash[i];
            ans=i;
        }
    }
    // printf("%d %d\n",i,hash[i]);
    printf("%d",ans);
    return 0;
}

学生的平均成绩

有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),其中学号和姓名都是以字符串方式存储,计算出每名学生的平均成绩,

输入格式:
分别在5行中输入5名学生的信息。按照学号、姓名、3门课的成绩顺序输入,学号和姓名是均不超过4个字符的字符串,字符串中不包含空格、换行符和制表符,一名学生的各个数据之间用一个空格间隔。
输出格式:
分别在5行中输出5名学生的信息。按照学号、姓名、3门课的平均成绩顺序输出,其中学号和姓名输出占5列列宽,平均成绩保留1位小数,输出占5列列宽。

输入样例:
1 aa 78 45 12
2 bb 95 85 95
3 cc 75 45 65
4 dd 74 84 95
5 ee 48 49 56
输出样例:
1 aa 45.0
2 bb 91.7
3 cc 61.7
4 dd 84.3
5 ee 51.0

#include <stdio.h>

typedef struct Students{
    int sno;
    char name[5];
    int score1;
    int score2;
    int score3;
    double avg;
}Stu;
int main(){
    Stu s[9];
    for(int i=0;i<5;i++) 
        scanf("%d %s %d %d %d",&s[i].sno,s[i].name,&s[i].score1,&s[i].score2,&s[i].score3);
    
    for(int i=0;i<5;i++) {
        s[i].avg=(double)(s[i].score1+s[i].score2+s[i].score3)/3;
        printf("%5d%5s%5.1f\n",s[i].sno,s[i].name,s[i].avg);
    }
    
    return 0;
}

找最长的字符串

本题要求编写程序,针对输入的N个字符串,输出其中最长的字符串。

输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。
输出格式:
在一行中用以下格式输出最长的字符串:
The longest is: 最长的字符串
如果字符串的长度相同,则输出先输入的字符串。

输入样例:
5
li
wang
zhang
jin
xiang
输出样例:
The longest is: zhang

#include <stdio.h>
#include <string.h>

typedef struct String{
    char str[89];
    int length;
}Str;
int cmp(const void* e1,const void* e2){
    Str* a=(Str*)e1;
    Str* b=(Str*)e2;
    return a->length < b->length;
}
int main(){
    int n;scanf("%d",&n);
    Str s_struct[1009];
    for(int i=0;i<n;i++){
        scanf("%s",s_struct[i].str);
        int len=strlen(s_struct[i].str);
        s_struct[i].length=len;
    }
    qsort(s_struct,n,sizeof(Str),cmp);
    printf("The longest is: %s",s_struct[0].str);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3安装Element Plus

文章目录 安装使用包管理器安装配置&#xff1a;完整引入按需引入&#xff1a; 使用&#xff1a; 以下将参考Element Plus官网 一个 Vue 3 UI 框架 | Element Plus (element-plus.org)进行 安装 在创建好的项目文件控制台下安装&#xff1a; 使用包管理器 我们建议您使用包…

设计模式结构型模式之代理模式

结构型模式之代理模式 一、概念和使用场景1、概念2、核心思想3、java实现代理模式的方式4、使用场景 二、示例讲解1. 静态代理2. 动态代理 三、总结1、使用规则2、代理模式的优点包括&#xff1a;3、代理模式的缺点包括&#xff1a; 一、概念和使用场景 1、概念 代理模式是一…

低配电脑也能玩《黑神话:悟空》,上Finovy Cloud白嫖4090云桌面!

猿神&#xff01;启动&#xff01; 各位天命人&#xff0c;大家都玩上《黑神话&#xff1a;悟空》了吗&#xff1f;玩上的友友&#xff0c;又几周目了呢&#xff1f; 20号刚上线&#xff0c;《黑神话&#xff1a;悟空》火速攻上了微博热搜第一&#xff0c;网上的评论也层出不…

家里养宠物空气净化器有用吗?哪款最值得推荐?

家里养了一只猫和一条狗&#xff0c;幸福感翻倍上升。首先就是它能在这座城市给我极大的安慰&#xff0c;每次都不知道应该向谁诉说难过的时候&#xff0c;它们总能给我极大的安慰。它们除了给我安慰&#xff0c;还会给我带来新的朋友&#xff0c;毕竟自己一个人来到一座城&…

封装信号灯集相关API

由信号灯实现通信。 发送端send.c代码&#xff1a; #include <myhead.h> #include "./sem.h" #define PAGE_SIZE 4096 int main(int argc, const char *argv[]) {int semid semID_get(2);//创建2个信号灯key_t key ftok("./",U);if(key-1){perro…

书籍销售系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;书籍分类管理&#xff0c;书籍信息管理&#xff0c;订单管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;书籍信息&#xff0c;书籍资讯&#xff0…

互联网人+大模型=?

外界看互联网人和大模型的关系 是“你有这么高速运转的互联网人 搭载了大模型记住我给出的原理” 而实际上大模型的出现 让原本整齐划一说黑话的互联网人 分裂出了各种派别 朋友&#xff0c;现在是大模型乱纪元&#xff0c; 而你&#xff0c;又是哪一派呢&#xff1f; —…

【C++ Primer Plus习题】7.2

问题: 解答: #include <iostream> using namespace std;#define MAX 10int input(float* grade, int len) {int i 0;for (i 0; i < len; i){cout << "请输入第" << i 1 << "个高尔夫成绩(按0结束):";cin >> grade[i]…

【读点论文】Text detection and localization in scene images: a broad review

Text detection and localization in scene images: a broad review Abstract 如今&#xff0c;文本检测和定位在文本分析系统领域已广受欢迎&#xff0c;因为它们为大量实时应用铺平了道路&#xff0c;例如移动音译技术、视障人士辅助方法等。 文本检测和定位技术用于查找图…

过滤器和拦截器的使用和原理

1. 过滤器和拦截器 过滤器(Filter) 拦截器(Interceptor) 1.1 区别 过滤器和拦截器触发时机不一样, 过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前拦截器可以获取IOC容器中的各个bean,而过滤…

科研项目经费管理,降本增效的不二之选

国内外主流的 10 款科研项目经费管理系统对比&#xff1a;PingCode、Worktile、Colloa科研项目管理平台、云科研管理系统、智方科研管理系统、NIH Grants、NSF – National Science Foundation、IDRC、Bill & Melinda Gates Foundation、Canadian Institutes of Health Res…

媲美Flux pro! Ideogram 发布了 2.0 图像生成模型, 照片级真实感和高质量文本渲染!

Ideogram 发布了 2.0 模型,图像生成质量大幅提高&#xff0c;产品易用性改善&#xff0c;文字生成能力也提升许多。Ideogram 2.0 在图像快速对齐、照片级真实感和文本渲染质量方面取得了显著进步。人工评估一致认为 Ideogram 2.0 比 Flux Pro 和 DALLE 3 有了显著改进。尽管我们…

人工智能的可解释性(XAI) | 使用LIME

人工智能&#xff08;AI&#xff09;的广阔领域近年来经历了巨大的增长。随着每年更新、更复杂的模型问世&#xff0c;人工智能模型已经开始以无人能预测的速度超越人类智力。但是&#xff0c;随着我们得到更准确和精确的结果&#xff0c;解释这些模型所采取的复杂数学决策背后…

[翻译+笔记] 用于视频生成的Diffusion Model

这次翻译笔记的博客是https://lilianweng.github.io/posts/2021-07-11-diffusion-models/ 在阅读这篇博客前, 推荐先对Diffusion Model进行了解. 可以看我的笔记: https://blog.csdn.net/wjpwjpwjp0831/article/details/141524088 视频相关的任务向来是比图像更有挑战性, 这是…

涉密载体管控系统DW-S402|实现载体全寿命管控

为加强涉密载体使用管控&#xff0c;按照预防为主&#xff0c;强化监督&#xff0c;在满足各级保密规定前提下&#xff0c;方便涉密载体的使用和管理&#xff0c;确保涉密载体保密安全。 现有涉密载体使用过程中&#xff0c;存在手工登记台账耗工耗时、领用情况不直观、违规带…

史上最全Android UI界面设计尺寸!点击收藏

作为一名 UI 设计师&#xff0c;在进行 Android UI 设计之前&#xff0c;首先需要明确 Android 系统与 iOS 系统之间的主要区别。Android 系统是开源的&#xff0c;而 iOS 系统则是不开源的。虽然 Android 系统的开源特性对于交互设计师是有益的&#xff0c;但它也带来了一些挑…

白立新谈命运三重奏:《黑神话:悟空》中的人生思考

文 | 头部财经首席评论员白立新 发布 | 头部财经 top168.com 导语&#xff1a;《黑神话&#xff1a;悟空》中三个悟空形象演绎命运三种属性。老者悟空象征确定性&#xff0c;历经沧桑&#xff0c;蕴含世界法则&#xff1b;玩家操作悟空代表能动性&#xff0c;承载玩家意志影响…

seaborn:一个超炫的数据可视化Python库

我是东哥&#xff0c;专注于分享Python技术的自媒体人。今天&#xff0c;我将带你深入了解一个非常有趣的Python库——Seaborn。无论你是刚入门的Python小白&#xff0c;还是希望提升数据可视化技能的技术小白&#xff0c;相信这篇文章都会对你有所帮助。 项目地址&#xff1a…

数学符号-西格玛

西格玛”是希腊字母&#xff0c;也有念作“西玛”“希玛”等各种读法&#xff0c;符号是∑,英文译音是Sigma, 表示数学中的求和号&#xff0c;是数学中常用的符号&#xff0c;主要用于求多项数的和&#xff0c;用∑表示 ∑下面的小字,如i1表示从i1开始求和 上面的小字&#xf…

【网络世界】网络层

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 网络层 &#x1f4c1; IPV4 &#x1f4c2; 什么是IP地址 &#x1f4c2; 网段划分 &#x1f4c2; 特殊IP &#x1f4c2; 内网和公网 &#x1f4c2; IPV4的危机 &#x1f4c1; IP协议格式 &#x1f4c1; 路由 &#x1f…