大一上学期c语言期末----程序填空 及 编程题

这篇具有很好参考价值的文章主要介绍了大一上学期c语言期末----程序填空 及 编程题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序填空

1、

运行结果:请用标准日期格式输入一个日期(YYYY-MM-DD):
若用户从键盘输入:2022-12-12<回车> 则输出结果为:
2022 年 12 月 12 日

#include <stdio.h> 
int main()
{ int year, month,day;
printf("请用标准格式输入一个日期(YYYY-MM-DD):";
scanf("%d-%d-%d",&year,&month,&day);
printf("%d年%d月%d日",year,month,day);
return 0;
}

2、

2、 完成下面程序,计算圆的面积,结果保留两位小数:

#include <stdio.h> 
int main()
{
	  double pi=3.14159;	/*定义只读常量 pi*/
	double r;
	scanf("%lf", &r);
	printf(" area=%.2f",r*r*pi);
return 0;
}

3、

s100=1-1/2+1/3-1/4+…+1/999-1/1000

#include <stdio.h> int main()
{
	float S=1 ;
	int i,sign=-1;
	for(i=2;i<=1000 ;i++)
{
	S=S+(1/(float)i)*(float)sign ;
	sign=-sign;
}
	printf("%.5f\n",S); 
	return 0;
}

4、

求 1!+3!+5!+……+n!的和

#include <stdio.h> 
void main()
{ 
	long int f,s; s=0
	int i,j,n;
	s=0; 
scanf("%d",&n); 
for(i=1;i<=n; i+=2)
{ 	
	f=1; 
	for(j=1; j<i;j++)
		f*=j; 
		s=s+f;
		} 
printf("n=%d,s=%ld\n",n,s);
}

5、

方法:辗转法求最大公约数
例子:100/15=6…10
15/10=1…5(最小公约数)
10/5=2…0

相除法求最小公倍数
例子:100 * 15 / 5 =300

#include<stdio.h> 
void main()
{ int m,n,r,p,gcd,lcm;
 scanf("%d%d",&m,&n); 
 if(m<n) {p=m,m=n;n=p;}
 p=m*n;
 r=m%n;   
while(r != 0 )
{ 
	m=n;
	n=r; 
	r=m%n;
} 
	gcd=n; 
	lcm=p/gcd; 
	printf("gcd=%d,lcm=%d\n",gcd,lcm);
}

6、

编写递归函数实现求两个整数的最大公约数,主函数读入待求的两个整数并调用公约数函求解,输出结果。

#include<stdio.h> 
int gcd ( int m, int n)
{	
	int r; 
	r=m%n; 
	if(r==0)return n;
	return gcd(n,r);
} 
	int main( )
{ 
	int m, n; 
	scanf("%d%d", &m, &n); 
	printf ( "Gcd of m and n is: %d\n",gcd(m,n)); 
	return 0;
}

7、

完成下面程序,给一维数组输入数据后,找出下标为偶数的元素的最小值并输出。

#include <stdio.h> 
int main ( )
{ 
	int a[10], min;
 	int i;
	for (i=0; i<10;i++)
	scanf("%d",&a[i]); 
	min=a[0];
	for (i=2;i<10;i+=2){
		if(a[i-1]<min) min=a[i-1];
	} 
	
	printf ("%d", min); 
	return 0;
}

8、

求得二维数组 a 的每行最大值,并存储在数组 b 中,请将程序补充完整

#include <stdio.h> 
void fun (int ar[ ][4], int bar[], int m, int n)
{
	int i, j; 
	for(i=0;i<m;i++)
	{
		bar[i]=ar[i][0]; //
		for(j=1;j<n;j++) 
		if(ar[i][j]>bar[i]) bar[i]=ar[i][j];
	} 
}
int main ()
{ int a[3][4] = {{12, 41, 36, 28}, {19,33,15,27}, {3,27,19, 1}}, b[3], i;
	fun(a,b,3,4); //
	for (i=0;i<3;i++) 
	printf ("%4d", b[i]);
	printf("\n"); 
	return 0;
}

9、

给一维数组输入数据,调用函数 fun 找出下标为偶数的元素的最小值,在主函数中输出该值。

#include<stdio.h> 
int fun(int *arr,int n)
{	
	int i, min;
	min=arr[0]; 
	for(i=2;i<10;i+=2 ) 
	if(arr[i]<min) min=arr[i]; 
		//printf("%d",i);
	return min;	
} 
int main()
{	
	int i,a[10];
	for(i=0;i<10;i++)
	scanf("%d",&a[i]); 
	printf("最小值为:%d\n",fun(a,1));
	return 0;
}

10、

下列程序读出文本文件 C:\dream.txt 中的内容,将所有小写字母改为大写字母并输出,请将程序补充完整。

#include<stdio.h> 
#include<stdlib.h> 
int main()
{
 FILE*fp; 
 char ch; 
 fp=fopen("C:\\dream.txt","r"); 
 if(fp==NULL)
{
	printf("file error!\n"); 
	exit(0); } 
	while((ch=fgetc(fp))!=EOF)
{ 
	if(ch>='a' && ch<='z')
	{
	 	ch-=32;
	} 
	putchar(ch);
}
	putchar('\n');
	fclose(fp);
	return 0;
}

11、

完成程序,将数组 array 中的数据逆序存放

#include <stdio.h> 
int main( )
{ 
	int array[10], i,j,t; 
	for(i=0;i<=9;i++)
	{ 
		scanf("%d",&array[i]); 
	}
		i=0;
		j=9; 
		while(i<j)
	{ 
		t=*(array+i);
		*(array+i)=*(array+j);
		*(array+i)=t;
		i++;
		j--;
		} 
		for(i=0;i<=9;i++)
		{ 
			printf("%3d",array[i]);
		} 
	return 0;
	}

12、

完成程序,将十进制转变为二进制,二进制的每一位存放在数组中

#include <stdio.h> 
int main( )
{	
	int b[16],x,k,r,i;
	printf("输入一个整型数:");
	scanf("%d", &x); 
	k=-1; 
	do{
		r=x%2; 
		k++;
		*(b+k)=r;
		x=x/2;
	} while(k<15);// 对二进制进行输出
	for(i=k;i>=0;i--) 
	{ 
		printf("%ld", *(b+i));
	} 
		return 0;
}

13、

给出矩阵的主对角线之和并找出最大元素

#include <stdio.h> 
int f(int a[3][3], int *max, int n)
{	

	int i,j,s=0; *max=a[0][0]; 
	for(i=0; i<n;i++)
	{	
			s = s+a[i][i];
		for(j=0;j<n;j++)
			{ 
				if(a[i][j]>*max)	*max=a[i][j];}
			} 
				return s;
	}
	int main( )
{ 	
	int a[3][3]={1,-2,9,4,-8,6,7,0,5}; 
	int max,sum; sum=f(a,&max,3); 
	printf("sum=%d, max=%d\n", sum, max); 
	return 0;
}

14、

  1. 用以下 delnum 函数实现删除字符串 s 中的数字字符
#include <stdio.h>
void delnum(char *s)
{ 
	int i,j; 
	for( i=0,j=0; s[i]!='\0'; i++)
{	if(s[i]<'0' || s[i]>'9')
	{ 	s[j]=s[i];
		j++;
	}
}
	s[j]='\0';
}
/上面是本题的答案。
int main(){
	char s[5];
	gets(s);
	delnum(s);
	printf("%s ",s);
	return 0;
}

15、

  1. 完成以下程序,该程序统计一个字符串中单词的个数,单词以空格分隔。
#include<stdio.h> 
#include<string.h> 
int main( )
{	
	int i,num=0,word=0; 
	char str[80];
	gets(str); 
	printf("%s",str); 
	for(i=0;i<strlen(str);i++) 
	{ 
		if(str[i]==' ')
		{ 
			word=0;
		}
	 	else if (word==0)
		 { 
		 	word=1; 
			num++;
		}
} 
	printf("%d\n",num);
}

16、

有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,设原有的数据和计算出的平均分数存放在磁盘文件"stud"中。
请将程序补充完整。

#include<stdio.h> 
struct student
{ 
	char num[6]; 
	char name[8]; 
	int score[3]; 
	float avr; 
	} stu[5];
int main()
{
	int i,j,sum;
	FILE *fp;
	for(i=0;i<5;i++)
{ 	
	printf("\n please input No. %d score:\n",i); 
	printf("stuNo:"); scanf("%s",stu[i].num); 
	printf("name:"); scanf("%s",stu[i].name); 
	sum=0; 
	for(j=0;j<3;j++)
{ 
	printf("score %d.",j+1); 
	scanf("%d",&stu[i].score[j]); 
	sum+=stu[i].score[j];
} 
	stu[i].avr=sum/3.0;
} 
	fp=fopen("stud","w"); 
	for(i=0;i<5; i++) if(fwrite(&stu[i],sizeof(struct student8),1,fp)!=1) printf("file write error\n");
	fclose(fp);
}

17、

以下程序的功能是按学生姓名查询其排名和平均成绩,查询可连续进行,直到键入 0 时结束,请在空白处填入正确内容。

#include<stdio.h>
#include<string.h>
#define	NUM 4
struct student
{ 
	int rank;
	char * name;
	float score; 
};
	struct student stu[ ]={3,"Tom",98.3, 4,"Mary",78.2, 1,"Jack",95.1,2,"Jim",90.6,
};
int main()
{
	char str[10];
	int i;
	do	{ 
			printf("Enter a name:"); 
			scanf("%s",str);
			 for(i=0;i<NUM;i++)
			 {
					 	if(strcmp(stu[i].name,str)==0)
					{	
						printf("name:%8s\n",stu[i].name);
						printf("rank:%3s\n",stu[i].rank);
						printf("average:%5.1f\n",stu[i].score);
						printf("45678");
						continue;
					}
						if(i>=NUM) printf("Not found\n"); 
			 }
			
		} while(strcmp(str,"0")!=0);}

编程题

第一题:

(1) 定义函数 int fun(int a[], int m); 实现查找小于或者等于 m 的所有素数并放在数组中,函数返回所求出的素数的个数。
(2) 定义主函数,主函数中首先定义一个数组 array;接着从键盘输入任意一个整数 m (<1000),然后调用函数 fun 输入数组和整数 m,并将查找出的素数和素数个数打印出来。

#include <stdio.h>
#include <string.h>
#define N 1000
int fun(int a[],int m){
	int i,t;
	int j=0;
	for(i=2;i<m;i++){
		
		if(i%2!=0){
			a[j]=i;
			j++;
			}
		}
	for(t=0;t<j;t++){	
		printf("%5d",a[t]);
		}
	printf("\n");
	printf("%d",j);
}
int main(){
	int m;
	int a[N];
	scanf("%d",&m);
	fun(a,m);
	return 0;
} 
第二题

(1) 定义函数int BubbleSort(int a[],int n),用冒泡法将数组元素按照从大到小的顺序排序。(4分)。
(2) 定义输入函数void Input(int a[],int n); 实现从键盘输入数组a中的n个元素(3分)。
(3) 定义输入函数void Print(int a[],int n); 实现输出数组a中的n个元素(3分)。
(4) 定义主函数,主函数中首先定义一个含15个元素的数组;接着调用Input函数输入10 个数组元素;在主函数中调用BubbleSort函数对数组的元素进行排序,并将排序的结果使用Print函数打印输出(5分)。

#include <stdio.h>
#include <string.h>
//冒泡排序
int BubbleSort(int a[],int n){
	int t;
	int i,j;
	for(i=9;i>=0;i--){
		for(j=0;j<i;j++){
			if(a[j]<a[j+1]){
					t=a[j+1];
					a[j+1]=a[j];
					a[j]=t;
				}
			}
		}
	}
//数组的输入
void Input(int a[],int n){
	int i;
	for(i=0;i<n;i++){
		scanf("%d",&a[i]); 
	}
}
//数组的打印
void Print(int a[],int n){
	int i;
	for(i=0;i<n;i++){
		printf("%d",a[i]);
	}
}

int main(){
	int a[15];
	Input(a,10);
	BubbleSort(a,10);
	Print(a,10);
	return 0;
}
第三题

在考生文件夹下,给定程序 pingyou.c 的功能是:学习优良奖的条件如下:所考 5 门课的总成绩在 450 分(含)以上;或者每门课都在 88 分(含)以上。 输入某学生 5 门课的考试成绩,输出是否够学习优良奖的条件。

#include<stdio.h>
int main()
{
	int a[5];
	int i,j,count,sum;
	for(i=0;i<5;i++)
	scanf("%d",&a[i]);
	for(j=0;j<5;j++)
	{
 	if(a[j]>=88)
	{
		count++;
	}
	sum+=a[j];
	}
	if(count==5 || sum >=450)
	{
		printf("优秀");
	}
	else
	{
		printf("不够优秀");
	}
	return 0;
 } 
第四题

输入一个 3×4 的二维整数矩阵,要求实现两个功能:(1)实现矩阵的转置;(2)遍历矩阵,输出矩阵中最大的数及其下标。

#include <stdio.h>
#include <string.h>
int main(){
	int a[3][4];
	int b[4][3];
	int i,j;
	//输入 
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			scanf("%d",&a[i][j]);
		}
	}
	//转置前 
	for(i=0;i<3;i++){
		for(j=0;j<4;j++){
			printf("%d",a[i][j]);
		}
		printf("\n");
	}
	//开始转置 
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			b[i][j]=a[j][i];
		}
	}
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			printf("%d",b[i][j]);
		}
		printf("\n");
	}
	//遍历元素寻找最大值,并输出下标 
	int max;
	max=b[0][0];
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			if(b[i][j]>max){
				max=b[i][j];
			}
		}
		printf("\n");
	}
	for(i=0;i<4;i++){
		for(j=0;j<3;j++){
			if(b[i][j]==max){
				printf("%d %d %d",max,i,j);
			}
		}
	}
	return 0;
}
第五题

5、 编写一个结构体类型的程序,定义一个结构体变量 struct student,其包含学号,姓名,三门课的成绩,成绩用数组保存,要求输入 10 个结构体变量学生的学号、姓名、3 门课程的成绩,求出总分最高的学生并输出。

#include <stdio.h>
struct student
{
    char num[20];
    char name[10];
    int score[3];
    int sum;
}st[10];
int main()
{
    int i,j,sum,max;
    for(i=0;i<10;i++)
    {
        printf("学号:");
        scanf("%d",&st[i].num);
        printf("\n姓名:");
        scanf("%s",&st[i].name);
        printf("\n语文:");
        scanf("%d",&st[i].score[0]);
        printf("\n数学:");
        scanf("%d",&st[i].score[1]);
        printf("\n英语:");
        scanf("%d",&st[i].score[2]);
    } 
    max=st[0].sum;
    for(i=0;i<10;i++)
    {
        st[i].sum=st[i].score[0]+st[i].score[1]+st[i].score[2];
        if(max<st[i].sum)
        max=st[i].sum;
        j=i;
    }
    printf("%d , %s  ",max,st[j].name);
    return 0;
}

    

第六题

6、 斐波那契数列(Fibonacci sequence),又称“黄金分割”数列,比如这样一个数列:1,1,
2,3,5,8,13,21,34,55,89… …数列从第 3 项开始,每一项都等于前两项之和。试用递归函数来实现斐波那契数列的求解。文章来源地址https://www.toymoban.com/news/detail-771888.html

#include <stdio.h>
#define N 1000
int fs(int n);
int main()
{
	int n;
	scanf("%d",&n);
	printf("%d",fs(n));
    return 0;
}
int fs(int n)
{
	if(n==1)
	{
		return 1;
	}
	if(n==0)
	{
		return 0;
	}
	else
	{
		return fs(n-1)+fs(n-2);
	}
}

    

到了这里,关于大一上学期c语言期末----程序填空 及 编程题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于大一上学期STM32培训的经验及教训(完全初学)

          主要是写出来给要直接学习STM32的人的一些经验或者是教训以及踩坑点,我后续也会开始写STM32的一些我已经学会的基础性的初学者应用型教程(如没有前置知识点亮LED,我会在这里说GPIO是个啥,怎么选口,怎么查手册等基础入门方法) 我也要期末考试后回家了,我想

    2024年02月03日
    浏览(36)
  • 加强C语言技能:40道填空题帮助你巩固基专升本期末考试试题

    简介: 在学习C语言的过程中,通过解决填空题可以帮助巩固基础知识、强化编程技能。本文将提供40道精选的C语言填空题,涵盖了基本概念、语法、控制结构以及常见操作。这些题目适用于初学者和希望进一步加强C语言能力的开发者。 内容大纲: 引言 C语言的重要性和应用

    2024年02月13日
    浏览(46)
  • 北邮信通2022C++大一上学期PTA汇总(含代码)(已完结)

    注意要选择C++ 本题要求编写程序,输出一个短句“Welcome to You!” 知识点: 1.头文件iostream(书P7) 设置C++I/O相关环境,并定义输入/输出流对象cin和cout等。 2.主函数(书P8) int main()表示函数要返回一个整数,与此对应的语句是\\\"return 0;\\\",代表它返回值是0 本题要求编写程序,计

    2024年02月07日
    浏览(37)
  • 算法初阶双指针+C语言期末考试之编程题加强训练

    常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般⽤于顺序结构中,也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼 近。 • 对撞指针的终⽌条件⼀般是两个指针相遇或者错开(

    2024年02月05日
    浏览(53)
  • 大一python题库及答案,大一python期末必考题

    大家好,小编来为大家解答以下问题,大一python填空题题库,大一python期末简答题,今天让我们一起来看看吧! 一、Python语言的简述 Python语言是一种解释型、面向对象的编程语言,是一种开源语言。 Python属于动态类定义语言,也是一种强调类型语言。 二、Python语言的特点

    2024年02月08日
    浏览(43)
  • 大一Python期末复习笔记

    目录 前言 一,输出格式控制 ①多行输出 ②不换行输出 ③精度保留和对齐 Ⅰ.format Ⅱ.f\\\'{}\\\' Ⅲ.% 二,嵌套 ①嵌套循环 Ⅰ.for          Ⅱ.while ②嵌套列表,字典 三,列表与字符串 ①添加元素 ②切片访问与逆序,join ③count,find,index ④删除与替换 list str 四,函数 ①lambda ②复

    2023年04月22日
    浏览(48)
  • 大一python期末复习综合题

    目录 前言 问题1:阶层函数 问题2:文件读取 问题3:嵌套循环 问题4:求最短路径 问题4.1:路径长度 问题4.2:最短路径 问题4.2.1:列表添加元素 问题4.2.2:返回最短路径 问题5:绘图 问题5.1:绘制城市坐标散点图 问题5.2:绘制路径图 本题涵盖的知识点主要包括嵌套列表,文件读

    2024年02月11日
    浏览(55)
  • C++ easyx大一期末作业利器

    紧跟着1.0版本的完成,又到了激动人心的C++期末作业了。(上学期是C语言的),这学期,我仅仅改了一点点上学期的期末作业,然后很轻松的水…啊不,完成了这次的期末作业。 所以,大家一定要注重复用!!! 很快乐。 这个改一改就是你的…啊不是,我是说基于框架进行开发

    2024年02月15日
    浏览(47)
  • JavaEE(SpringMVC)期末复习(选择+填空+解答)

    1. Spring的核⼼技术是( A )? A依赖注入 B.JdbcTmplate C.声明式事务 D.资源访问 Spring的核心技术包括依赖注入(Dependency Injection)、面向切面编程(Aspect-Oriented Programming)、控制反转(Inversion of Control)等。其中,依赖注入是Spring最为重要的特性之一,它通过将对象之间的依赖关

    2024年02月03日
    浏览(48)
  • 计算机视觉——期末复习(填空、名词解释)

    图像文件: 指包含图像数据的文件,文件内除图像数据本身以外,还有对图像的描述信息等 距离变换: 特殊的变换,把二值图像变换为灰度图像 距离图: 如果考虑目标区域中的每个点与最接近的区域外的点之间的距离, 并用与距离成正比的灰度表示该点的灰度,那么这样

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包