几个没有技术含量的大一实验
1.程序填空,该程序功能是:从键盘输入10名学生的成绩,显示其中的最高分、最低分和平均成绩。
源程序:
#include <stdio.h>
void main()
{ /**********found**********/
float s[10], *p = s;
float max, min, average;
int i;
for (i = 0; i < 10; i++)
{
scanf("%f", p++);
}
/**********found**********/
p = s;
/**********found**********/
max = min = average = *p;
for (i = 1; i < 10; i++)
{
if (*(p + i) > max)
max = *(p + i);
if (*(p + i) < min)
min = *(p + i);
average += *(p + i);
}
/**********found**********/
average /= i;
printf("max=%.2f,min=%.2f,average=%.2f\n", max, min, average);
}
运行结果
95 62 75 78 82 56 91 59 60 85
max=95.00,min=56.00,average=74.30
2. 下述程序中函数 fun 的功能是:将在字符串s中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符出现的逆序排列。(注意0为偶数)
例如:
当s中的字符串为:"ABCDEF"时,
则t中的字符串应为:“EECCAA”。
请改正函数fun中的错误,使它能得出正确的结果。
源程序:
#include <stdio.h>
#include <string.h>
void fun(char *s, char *t)
{
int i, j, sl;
sl = strlen(s);
if (sl % 2)
sl--;
else
sl -= 2;
/************found************/
for (i = sl, j = 0; i >= 0; i--) /*for (i=sl, j=0; i>=0; i-=2)*/
{
t[2 * j] = s[i];
t[2 * j + 1] = s[i];
j++;
}
/************found************/
t[2 * sl] = '\0'; /*t[2*j] = '\0';*/
}
void main()
{
char s[100], t[100];
printf("\nPlease enter string s:");
scanf("%s", s);
fun(s, t);
printf("The result is: %s\n", t);
}
运行结果:
第一组:
Please enter string s:ABCDEF
The result is: EECCAA
第二组:
Please enter string s:AEYGFDQ
The result is: QQFFYYAA
3. 利用函数和指针编写程序,从键盘输入一个字符串,然后按照下面要求输出一个新字符串。新串是在原串中,每两个字符之间插入一个空格,如原串为abcd,则新串为a□b□c□d(□为空格)。
源程序:
#include<stdio.h>
void fun(char *s)
{
int i, _strlen;
_strlen = strlen(s) - 1;
for (i = _strlen; i > 0;i--){
*(s + 2 * i) = *(s + i);
*(s + 2 * i - 1) = ' ';
}
}
void main()
{
char a[20];
printf("请输入一个字符串:\n");
gets(a);
fun(a);
printf("新字符串是:\n");
puts(a);
}
运行结果:
请输入一个字符串:
cashduqwhd
新字符串是:
c a s h d u q w h d