【学习记录】第一次随堂测

 选择题

1.
首次提交时间:2022-04-27 09:40:12    最后一次提交时间:2022-04-27 09:40:12

下面程序的功能是将字符串s中所有的字符’c’删除。请选择填空。
#include<stdio.h>
main()
{
 char s[80];
 int i,j;
 gets(s);
 for(i=j=0;s[i]!=’\0’;i++)
  if(s[i]!=’c’) 【正确答案: a
 s[j]=’\0’;
 puts(s);
}

(A)s[j++]=s[i];
(B)s[++j]=s[i];
(C)s[j]=s[i];j++;
(D)s[j]=s[i];

得分:5.00
2.
首次提交时间:2022-04-27 09:47:48    最后一次提交时间:2022-04-27 09:47:48

要打开一个已存在的非空文件“file”用于修改,正确的语句是: 【正确答案: D
A.fp=fopen("file","r");
B.fp=fopen("file","a+");
C.fp=fopen("file","w");
D.fp=fopen("file","r+");

得分:5.00
3.
首次提交时间:2022-04-27 09:54:44    最后一次提交时间:2022-04-27 09:54:44

下述对C语言字符数组的描述中错误的是 【正确答案: c         
(A)  字符数组可以存放字符串
(B)  字符数组的字符串可以整体输入,输出
(C)  可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
(D)  不可以用关系运算符对字符数组中的字符串进行比较

得分:5.00
4.
首次提交时间:2022-04-27 10:01:02    最后一次提交时间:2022-04-27 10:01:02

以下程序的输出是 【正确答案: d】。

#include<stdio.h>

main()

{printf("%d",null);}

A 0

B -1

C 1

D 变量无定义

得分:5.00
5.
首次提交时间:2022-04-27 10:02:26    最后一次提交时间:2022-04-27 10:02:26

有下面的程序段:
char a[3], b[] = "China";
a = b;
printf("%s", a);a
则    【正确答案: d】     

(A)  运行后将输出China
(B)  运行后将输出Ch
(C)  运行后将输出Chi
(D)  编译出错

得分:5.00
6.
首次提交时间:2022-04-27 10:06:29    最后一次提交时间:2022-04-27 10:06:29

已知学生记录的定义为:
struct student
{
 int no;
 char name[20];
 char sex;
 struct
 {
  int year;
  int month;
  int day;
 }birth;
};
struct student s;
假设变量s中的“生日”应是“1988年5月10日”,对“生日”的正确赋值语句是 【正确答案: d】      
(A) year=1988; month=5; day=10;
(B) brith.year=1988; birth.month=5; birth.day=10;
(C) s.year=1988; s.month=5; s.day=10;
(D) s.birth.year=1988; s.birth.month=5; s.birth.day=10;

得分:5.00
7.
首次提交时间:2022-04-27 10:08:02    最后一次提交时间:2022-04-27 10:08:02

 在C语言中的if语句中,用作判断的表达式为 【正确答案: d
 A 关系表达式
 B 逻辑表达式
 C 算术表达式
 D 任意表达式

得分:5.00
8.
首次提交时间:2022-04-27 10:10:49    最后一次提交时间:2022-04-27 10:10:49

对 for (表达式1; ; 表达式3)可理解为   【正确答案: b】     
(A)  for (表达式1; 0; 表达式3)
(B)  for (表达式1; 1; 表达式3)
(C)  for (表达式1; 表达式1; 表达式3)
(D)  for (表达式1; 表达式3; 表达式3)

得分:5.00
9.
首次提交时间:2022-04-27 10:14:54    最后一次提交时间:2022-04-27 10:14:54

以下正确的函数声明形式是  【正确答案: c】         

(A)  double fun(int x, int y)
(B)  double fun(int x; int y)
(C)  double fun(int x, int y);
(D)  double fun(int x, y);

得分:5.00
10.
首次提交时间:2022-04-27 10:15:17    最后一次提交时间:2022-04-27 10:15:17

对以下说明语句的正确理解是 【正确答案: b】          
int a[10] = {6, 7, 8, 9, 10};
(A)  将5个初值依次赋给a[1]至a[5]
(B)  将5个初值依次赋给a[0]至a[4]
(C)  将5个初值依次赋给a[6]至a[10]
(D)  因为数组长度与初值的个数不相同,所以此语句不正确

得分:5.00

 判断题

1.
首次提交时间:2022-04-27 10:18:35    最后一次提交时间:2022-04-27 10:18:35

变量的指针就是变量的地址

正确答案:正确
正确       错误
得分:6.00
2.
首次提交时间:2022-04-27 10:23:24    最后一次提交时间:2022-04-27 10:23:24

若有定义int a,*p=&a,*q=p;则p、q都指向a

正确答案:正确
正确       错误
得分:6.00
3.
首次提交时间:2022-04-27 10:23:34    最后一次提交时间:2022-04-27 10:23:34

当以参数w打开文件时,若指定路径下已有同名文件,则覆盖原有文件

正确答案:正确
正确       错误
得分:6.00
4.
首次提交时间:2022-04-27 10:23:36    最后一次提交时间:2022-04-27 10:23:36

常量1和常量'1'是相等的。

正确答案:错误
正确       错误
得分:6.00
5.
首次提交时间:2022-04-27 10:35:45    最后一次提交时间:2022-04-27 10:35:45

C语言中,执行表达式(*p)++后p的指向改变了

正确答案:错误
正确       错误

 编程题

#题目分值批阅信息
1.求中位数

求中位数

【问题描述】输入n和n个数,求大于中位数的数据个数(n小于50).中位数是把一列数从小到大排列后,中间的那个数!如果那一列数是偶数,就取中间两个数的平均数!例如:

第1组数:1、2、3、6、7的中位数是3。 

第2组数:1、2、3、5的中位数是2.5。

【输入形式】输入正整数n和n个实数

【输出形式】1.输出中位数保留小数1位。中位数输出占一行。2.输出大于中位数的数据个数占一行。

【样例输入】

4  1  2  3  5

【样例输出】  

2.5

2

10.00下载源文件
下载参考代码
得分10.00   最后一次提交时间:2022-04-27 13:41:23

共有测试数据:4
平均占用内存:1.218K    平均CPU时间:0.00863S    平均墙钟时间:0.01016S
 
测试数据评判结果
测试数据1完全正确
测试数据2完全正确
测试数据3完全正确
测试数据4完全正确
2.n的阶乘

【问题描述】

输入一个正整数n(大于等于1,小于100),编程计算并输出n的阶乘。

【输入形式】

从标准输入读入一个正整数n(大于等于1,小于100)。

【输出形式】

在标准输出上输出计算出的n的阶乘。

【样例输入】

30

【样例输出】

265252859812191058636308480000000

【样例说明】

输入正整数n为30,30的阶乘为265252859812191058636308480000000。

【评分标准】该程序要求输出正整数的阶乘,提交程序文件名为exam2.c或exam2.cpp。

 编程题一

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int n, i, j, q, x = 0, y = 0;
	float  a[50], h, m;
	scanf("%d", &n);
	if (n >= 50)                                        /*n小于50*/
		printf("error\n");
	else
	{
		for (i = 0; i < n; i++)                         /*将输入的n个数赋入数组*/
			scanf("%f", &a[i]);
		for (j = 0; j < n-1; j++)                       /*比较n-1轮次,完成数据从小到大排列*/
		{
			for (i = 0; i < n-1-j; i++)                 /*从第一位开始比较*/
			{
				if (a[i] > a[i + 1])                    /*冒泡排序*/
				{
					m = a[i];
					a[i] = a[i + 1];
					a[i + 1] = m;
				}
			}
				
		}
		if (n % 2)
		{
			for (i = (n - 1) / 2 + 1; i < n; i++)       /*计算大于中位数的数字数量*/
				if (a[i] > a[(n - 1) / 2])
					x++;
			printf("%.1f\n%d\n", a[(n - 1) / 2], x);
		
		}
		else
		{
			q = n / 2;
			h = (a[q - 1] + a[q]) / 2;
			for (i = n / 2 + 1; i < n; i++)             /*计算大于中位数的数字数量*/
				if (a[i] > h)
					y++;
			printf("%.1f\n%d\n", h, y);
		
		}
	}
	return 0;
}

编程题二

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int n, i, a;
	a = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
		a = a * i;
	printf("%d", a);
	return 0;
}

测试总结:

涉及不熟练知识点:

  • 字符数组相关:

 不可以在赋值语句中通过赋值运算符"="对字符数组整体赋值;

  • 函数相关:

函数的声明是一条语句,因此结尾需要 " ; ";

  • 指针相关:

(*p)++ 先取指针所指的值,值再增一;

*p++  先取指针所指的值,指针再增一;

++*p  先取指针所指的值,并将该值自增一;

*++p  先将指针自增一,再取出该值;

  • 结构体相关:

暂待掌握。

  • 文件相关:

文件打开模式:

r:以只读的方式打开文本文件,文件必须存在;

w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开;

a:以只写的方式打开文本文件,文件若存在则从文件尾部以追加的方式开始写,文件原来存在的内容不会清除,若不存在则根据文件名创建新文件并只写打开;

r+:以可读写的方式打开文本文件,下一步操作前不会对文件原本内容造成影响;

w+:以可读写的方式打开文本文件,其他与w一样;

a+:以可读写的方式打开文本文件,其他与a一样;
 

  • 其他:

"null"无特殊含义;

"NULL"是系统定义的一个符号常量,值为0;

冒泡排序的使用——双重循环的嵌套;

浮点型与整型之间直接用"="符号赋值转换可能导致数据错误;

  • 特例:

大数额阶乘运算——未解决

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值