北雁计算机如何进入随机状态,计算机三级网络技术上机考试典型题型整理

*号不能省略;

Break与continue的区别是continue语句只结束本次循环,而不是终止整个循环的执行,而break语句则是结束循环,不再进行条件判断

返回值的问题: 题目中通常有提示;并且给出程序里有隐含信息其他的为结果输出到某一文件中.一般都有n = findStr(str, substr);之类的语句

If(等号一定是==)

检查大括号是否成对、正确(有没多加或少加)

注意不要乱加括号尤其是if语句中

一移位还是移动一个位置...<<.>>还是移动位置

初始值赋零;数组带[max]数字足够大;保留小数用(float)(j*100/k)/100

3题

以行为单位,依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放;然后把小写字母O删掉,余下的字符串内容移到以处理字符串的左边存放,之后把以处理字符串仍按行重新存入字符串数组xx中

void

StrOR(void).................................................☆☆☆☆

{

int i, j,

k;

char

buf[80];

for (i=0; i

{

j = strlen(xx[i])-1;

while (xx[i][j]!='o' &&

j>=0)

j--;

if (j

< 0)

xx[i][j] = 0;

strcpy(buf,

&xx[i][j+1]);

while (xx[i][j])

{

while (xx[i][j]!='o' &&

xx[i][j])

j++;

if (!xx[i][j])

{

buf,

&xx[i][k]);

break;

}

xx[i][j] = 0;

strcat(buf, &xx[i][k]);

j++;

k = j;

}

strcpy(xx[i], buf);

}

}

4题void

StrOL(void)................................................☆☆☆☆☆

{

int i, j,

k, strl, l;

for (i=0; i

for (j=0; j

j++)

(xx[i][j])

&& xx[i][j]!=' ')

xx[i][j] = ' ';

for (l=0; l

{

char

ch[80] = {0};

char

pp[80] = {0};

strl = strlen(xx[l]);

i = strl-1;

k = 0;

while(1)

{

while (isalpha(xx[l][i]) && i

>= 0)

{

for (j=k; j>=0; j--)

pp[j+1] = pp[j];

pp[0] = xx[l][i];

k++;

i--;

}

strcat(ch, pp);

strcpy(pp, "");

k = 0;

if (i < 0)

break;

}

strcpy(xx[l], ch);

}

}

25题寻找并输出11到999之间的数m,它满足m,m2,m3均为回文数;即各位数字左右对称的整数.

#include

#include

#include

int jsValue(long n)

{

int i,

strl, half;

char

xy[20];

strl = strlen(xy);

half = strl/2;

for (i=0; i

break;

if (i >= half)

return 1;

else

return 0;

}

main()

{

long

m;

FILE

*out;

out = fopen("out.dat", "w");

for (m=11; m<1000; m++)

{

printf("m=%4ld,m*m=%6ld,m*m*m=%8ld \n", m, m*m,

m*m*m);

fprintf(out,"m=%4ld,m*m=%6ld,m*m*m=%8ld \n", m, m*m,

m*m*m);

}

fclose(out);

}

33题*************难点

计算Xx中奇数个数odd偶数个数even及平均值和偶数的方差totfc

#include

#include

#include

#define MAX

1000

int xx[MAX], odd = 0,

even = 0;

double ave1 = 0.0, ave2 =

0.0, totfc = 0.0;

void WriteDat(void);

int ReadDat(void)

{

FILE

*fp;

int i,

j;

if ((fp = fopen("IN.DAT", "r")) == NULL)

return 1;

for (i=0; i<100; i++)

{

for (j=0; j<10; j++)

fscanf(fp, "\n");

if (feof(fp))

break;

}

fclose(fp);

return

0;

}

void Compute(void)

{

int i,

yy[MAX];

for (i=0; i<1000; i++)

if (xx[i]%2)

{

odd++;

ave1 += xx[i];

}

else

{

even++;

ave2 += xx[i];

}

ave1 /= odd;

ave2 /= even;

for (i=0; i

}

void main()

{

int

i;

for (i=0; i

xx[i] = 0;

if (ReadDat())

{

printf("数据文件IN.DAT不能打开!\007\n");

return;

}

Compute();

printf("ODD=%d\nEVEN=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",

odd, even, ave1, ave2, totfc);

WriteDat();

}

void WriteDat(void)

{

FILE

*fp;

fp = fopen("OUT.DAT", "w");

fprintf(fp, "%d\n%d\n%f\n%f\n%f\n", odd, even, ave1, ave2,

totfc);

fclose(fp);

}

57题N人报数出圈(余i是为了寻找出圈人的位置)

#include

#define N

100

#define S 1

#define M

10

int p[100], n, s,

m;

void WriteDat(void);

void Josegh(void)

{

int i, j,

s1, w;

s1 = s;

p[i-1] = i;

{

s1 = (s1+m-1)%i;

if (s1 == 0)

for (j=s1; j<=i-1; j++)

p[j-1] = p[j];

p[i-1] = w;

}

}

void main()

{

m = M;

n = N;

s = S;

Josegh();

WriteDat();

}

void WriteDat(void)

{

int

i;

FILE

*fp;

fp = fopen("OUT.DAT", "w");

{

printf("M ", p[i]);

fprintf(fp, "M", p[i]);

if (i == 0)

printf("\n");

fprintf(fp, "\n");

}

}

fclose(fp);

}

票数统计

void CountRs(void)

{

int i,

count, j;

char

*pf;

yy[i] = 0;

for (i=0; i<100; i++)

{

pf = xx[i];

count = 0;

while (*pf)

{

if (*pf ==

'1')

count++;

pf++;

}

if (count <= 5)

for (j=0; j<10; j++)

}

}

65题(数据统计;数据分解;分解后的筛选和统计;计算算术平均值;)

void CalValue(void)

{

int i,

thou, hun, ten, data;

for (i=0; i

{

break;

if (xx[i] > 0)

totNum++;

thou = xx[i]/1000;

hun = xx[i]00/100;

ten = xx[i]0/10;

data = xx[i];

if ((thou+hun+ten+data)%2)

{

totCnt++;

totPjz += xx[i];

}

}

totPjz /= totCnt;

}

67题(数据分解;分解后的筛选和统计)

void countValue()

{

int i,

thou, hun, ten, data;

{

thou = i/1000;

hun = i00/100;

ten = i0/10;

data = i;

if (thou+hun==ten+data

&& thou+hun==(data-thou)*10)

{

cnt++;

sum += i;

}

}

}

70题(统计个数,求算术平均值,位移运算符)

void CalValue(void)

{

int i,

data;

for (i=0; i

{

if

(!xx[i])

break;

if (xx[i] > 0)

totNum++;

data =

xx[i]>>1;

if (data%2)

{

totCnt++;

totPjz += xx[i];

}

}

totPjz /= totCnt;

}

第二题

void jsVal()

{

int

bb[4];

int i, j,

k, flag;

for (i=0; i<200; i++)

{

bb[0] =

a[i]/1000;

bb[1] = a[i]00/100;

bb[2] = a[i]0/10;

bb[3] = a[i];

for (j=0; j<4; j++)

{

if (bb[j]%2 == 0)

{

flag = 1;

}

else

{

flag = 0;

break;

}

}

if (flag == 1)

{

b[cnt] = a[i];

cnt++;

}

}

29题void jsVal()

{

int i,

thou, hun, ten, data, j;

int ab,

cd;

for (i=0; i<200; i++)

{

thou = a[i]/1000;

hun = a[i]00/100;

ten = a[i]0/10;

data = a[i];

if (thou==0

|| data==0)

continue;

ab = 10*thou+ten;

cd = 10*data+hun;

if ((ab-cd)>=10 &&

(ab-cd)<=20 &&

ab%2==0 &&

cd%2==0)

{

b[cnt] = a[i];

cnt++;

}

}

for (i=0; i

for (j=i+1; j

if (b[i] < b[j])

{

data = b[i];

b[i] = b[j];

b[j] = data;

}

}

80题(81类似)

注意if

else 语句的使用;

void jsValue()

{

int i,

thou, hun, ten, data, n = 0;

for (i=0; i<300; i++)

{

thou = a[i]/1000;

hun = a[i]00/100;

ten = a[i]0/10;

data = a[i];

if (data-thou-hun-ten > 0)

{

cnt++;

pjz1 += a[i];

}

else

{

n++;

pjz2 += a[i];

}

}

pjz1 /= cnt;

pjz2 /= n;

继续循环去下一行

K在原地j移动

连接与拷贝不能混用

Isalpha(int

ch)检查ch是否为字母,是返回1,否则返回0

之后检查是否是空格

不赋值调试不出来

Strlen(字符串)不包括’/0’

清空里面什么都没有

记住这个函数

Ltoa

将长整型数n转换为字符串存入数组xy中注意是数组名!!!!

Itoa(参数1,参数2,参数3)参数1为一个整型数据;参数2为一个字符串的地址;参数3为一个整型常量;该函数的功能是,将第一个参数转换成字符串,并且存入第二个参数所指的内存单元中.

--strl先减一在取值

注意前后联系...多看题目找思路

逗号隔开;还有后面的格式记住

再将此数保存到数组yy中,新数组只放偶数.

Totfc=1/N ∑ (xx[i]-ave2)

i=0

循环将数组p的内容从开头到尾初始化为1~n;

循环n-1次,以实现n-1次出圈动作,循环变量i代表所剩人数

计算当前应出圈的位置

求模实现

若计算机的位置值为0则让它等于i

保存应出圈的编号

剩余人数少于s1则不做循环;

循环将出圈者的位置以后的编码往前移动一位

将编码存入第i个位置

解决上面的序号问题p[0]没有取出但上面已经定义即最后剩下的是p[0].

清零yy中的元素

注意p前面没有*

p指向一个数组

不能丢掉’

不能丢掉-‘0’

若当前元素为0说明数组到此结束,跳出循环

给了上阈值就从上到下走

注意循环的范围.循环到哪为止?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值