目录
2.strcat函数(s1,s2)的作用是合并两个char 字符s1+s2
理论题
1.现代信息技术
以 | 电子技术,尤其是微电子技术 | 为基础 |
以 | 数字技术(计算机) | 为核心 |
以 | 通信技术 | 为支柱 |
我国正在大力推动新型工业化、信息化、城镇化、农业现代化同步发展
2.Power处理器:用于超级计算机、服务器、工作站
CPU系列产品 |
---|
Power处理器 |
Intel处理器 |
ARM处理器 |
AMD处理器 |
3. 8位二进制表示的整数范围
有符号 | -128 ,127 |
无符号 | 0 ,255 |
非理论题
1.do-while语句的循环体至少会被执行一次
因为它是先执行循环体,再判断条件
关于循环体的一些判断 | |
---|---|
do-while语句的循环体至少会被执行一次 | √ |
while语句的循环体至少会被执行一次 | × |
for语句的循环体至少会被执行一次 | × |
只能用do、do-while 或 for 语句实现 | × |
2.strcat函数(s1,s2)的作用是合并两个char 字符s1+s2
代码题
1.改错题:几个经典错点(简单却易错)
【程序功能】
将一个仅由数字及小写字母组成的字符串中的字符从左向右按下列规则重新排列:小写字母从字符串的左端开始向右摆放,数字从字符串的右端开始向左摆放。
【测试数据与运行结果】
测试数据:"g1bc3d24fa
输出: gbcdfa4231
#include <string.h>
#include <stdio.h>
#include<conio.h>
void adjust(char *str)
{
int i,j,k,len;
char c;
len=strlen(str);
i=0; j=0;
for(i<len-j)
{
c=str[i];
if('a'<=c<='z')
i++;
else
{
for(k=i+1;k<len-j; k++) //放号了j个,就不用管j个
str[k-1]=str[k];
str[len-1]=c; //达到数字逆序排列的效果
j++;
}
}
}
int main()
{
char str[20]="g1bc3d24fa";
adjust(str[20]);
puts(str);
getch();
return 0;
}
这些问题很经典。(简单却易错)
【1】:for(;i<len-j;)循环前后写了i=0和i++,故表达式1和表达式3可以隐去,但表达式2是绝对不能省略的
也可以改成while(i<len-j)
【2】:‘a' <= c && c <= 'z'
为了满足条件,这中间的代码是想 把字符元素往前面提 ,把数字元素往往后移动一位。来完成题目要的功能
j是统计数字元素的个数,
【3】:str[len-(j+1)] = c
【4】:str 通过调用的函数看出来str是数组了,那么adjust那里就不需要中括号和数字了。毕竟要的不是元素
2.自己写:模拟约瑟夫环问题
【编程要求】
- 编写 void joseph(int a[],int b[],int n,int m)函数。
a指向的数组前n个元素中存储了n个人的编号(1,2…,n)。n个人围坐成一圈,从编号为1的人开始报数(从1报到m),凡报到m的人出列。将每次出列人的编号依次保存在b指向的数组中,直到最后一个人出列为止
- 编写main函数。
声明2个一维数组并用{1,2,3,4,5,6,7,8,9,10}初始化其中1个数组。声明2个变量n、m并用测试数据初始化。用2个数组和2个变量作实参调用 joseph函数。将函数处理后得到的n个出列人的编号输出到显示器屏幕及文件myf2out中。最后将考生本人准考证号输出到文件2,out中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void joseph(int a[],int b[],int n,int m)
{
int i ,j,k = 0;//i:数组a的下标;j:统计1-m的人数 ; k:数组b的下标
for(i = 0;i < n ;)
{
if( i == 0 && a[0] != -1 )
{
for(j = 0;j < m-1;j++)
{
i++;
if(i == n) i = 0;
if(a[i] == -1) j--;//让其多循环一次
}
}
else
{
for(j = 0;j < m;j++)
{
i++;
if(i == n) i = 0;
if(a[i] == -1) j--;//让其多循环一次
}
}
//出局的人放到数组b中
b[k++]=a[i];
a[i] = -1;
if (k == n)break;
}
}
int main()
{
int n = 10,m = 3;
int s1[] = {1,2,3,4,5,6,7,8,9,10},s2[10];
joseph(s1,s2,n,m);
int i;
for(i = 0;i < 10;i++)
{
printf("%d ",s2[i]);
}
printf("\n");
char testid[20];
printf("请输入准考证号:");
gets(testid);
FILE *fp;
fp = fopen("myf2.out","w");
for(i = 0;i < 10;i++)
{
fprintf(fp,"%d",s2[i]);
}
for(i = 0;testid[i] != '\0';i++)
{
fprintf(fp,"%d",testid);
}
return 0;
}