a12 b8 c5
12 0 0
* * *( “*”表示当前状态下每个容器的盛水量)
......
6 6 0
问题2:
编程实现:有二维数组a[3][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}},将数组a的每一行元素均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),按行输出新数组。(20分)
问题3:
编程:设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)- cos(x)的最大值,要求使用自定义函数实现f(x)功能。(20分)
问题4:
编写函数fun,通过指针实现将一个字符串反向。要求主函数输入字符串,通过调用函数fun实现输入字符串反向。(20分)
问题5:
已知学生三门课程基本信息如下。请使用结构体编程,计算学生三门课程平均成绩后,列表输出学生的姓名、数学、英语、计算机、平均分信息,并按平均分排序。(20分)
姓名 数学 英语 计算机
Mary 93 100 88
Jone 82 90 90
Peter 91 76 71
Rose 100 80 92
问题6:
编程实现输入一串英文,统计其中各单词出现的个数(不区分大小写字母),以“000”作为字符串输入结束标志,例如:
Twinkle twinkle little star 000(回车)
twinkle little star
2 1 1 (50分)问题1的实现代码:
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i_w[]= {12,0,0};
printf("a12 b8 c5\n");
while(i_w[0]!=6)
{
if(i_w[1]==0)
{
i_w[1]=8;
i_w[0]=i_w[0]-8;
i_w[2]=12-i_w[0]-i_w[1];
}
else
{
if(i_w[2]<5)
{
if(i_w[1]>(5-i_w[2]))
{
i_w[1]-=5-i_w[2];
i_w[2]=5;
i_w[0]=12-i_w[1]-i_w[2];
}
else
{
i_w[2]+=i_w[1];
i_w[1]=0;
i_w[0]=12-i_w[1]-i_w[2];
}
}
else
{
i_w[0]+=i_w[2];
i_w[2]=0;
i_w[1]=12-i_w[0]-i_w[2];
}
}
printf("%d %d %d\n",i_w[0],i_w[1],i_w[2]);
}
system("PAUSE");
return 0;
}
问题2实现代码:
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float f_arr[][3]={{5.4,3.2,8},{6,4,3.3},{7,3,1.3}};
float f_temp=0;
int i,j;
for(i=0;i<3;i++)
{
f_temp=f_arr[i][i];
for(j=0;j<3;j++)
{
f_arr[i][j]/=f_temp;
printf("%f ",f_arr[i][j]);
}
printf("\n");
}
system("PAUSE");
return 0;
}
问题3实现代码:
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float f(int x)
{
return (x-sin(x)-cos(x));
}
int main(int argc, char *argv[])
{
float f_max,f_temp=0;
int i,pos;
f_max=f(1);
for(i=0;i<20;i++)
{
f_temp=f(i+1);
if(f_max<f_temp)
{
f_max=f_temp;
pos=i+1;
}
}
printf("max is %f\npos is %d\n",f_max,pos);
system("PAUSE");
return 0;
}
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
/*三种实现方法*/
//void fun(char* str)
//{
// int len = strlen(str);
// char* s_temp = (char*)malloc(len+1);
// strcpy(s_temp , str);
// char* s_p = s_temp+len-1;
// while(s_p>=s_temp)
// {
// *str++=*s_p--;
// }
// free(s_temp);
// s_temp=NULL;
// }
//void fun(char *str)
//{
// char* s_p = str + strlen(str)-1;
// while(s_p>=str)
// {
// printf("%c",*s_p);
// s_p--;
// }
// }
char* fun(char* str)
{
char* ret = str;
char* s_p = str+strlen(str)-1;
while(s_p>str)
{
*str^=*s_p;
*s_p^=*str;
*str^=*s_p;
s_p--;
str++;
}
return ret;
}
int main(int argc, char *argv[])
{
char str[20];
printf("please input a string:");
scanf("%s",str);
printf("%s\n",fun(str));
system("PAUSE");
return 0;
}
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char name[20];
float f_math,f_english,f_compute,f_ave;
}stu;
stu g_arr[4]={{"Mary",93,100,88},{"Jone",82,90,90},{"Peter",91,76,71},{"Rose",100,100,92}};
void c_ave(stu s_arr[],int i_n)
{
int i;
for(i=0;i<i_n;i++)
{
s_arr[i].f_ave = (s_arr[i].f_math+s_arr[i].f_english+s_arr[i].f_compute)/3;
}
}
void sort(stu s_arr[],int i_n)
{
stu* s_p[i_n],*s_temp;
int i,j,i_num;
float f_temp;
for(i=0;i<i_n;i++)
{
s_p[i]=&s_arr[i];
}
for(i=0;i<i_n;i++)
{
i_num = i;
for(j=i+1;j<i_n;j++)
{
if(s_p[i_num]->f_ave<s_p[j]->f_ave)
{
i_num = j;
}
}
if(i_num!=i)
{
s_temp = s_p[i];
s_p[i] = s_p[i_num];
s_p[i_num] = s_temp;
}
printf("%s %f %f %f %f\n",s_p[i]->name\
,s_p[i]->f_math,s_p[i]->f_english\
,s_p[i]->f_compute,s_p[i]->f_ave);
}
}
int main(int argc, char *argv[])
{
c_ave(g_arr,4);
printf("姓名 数学 英语 计算机\n");
sort(g_arr,4);
system("PAUSE");
return 0;
}
/*author:宋金时*/
/*date:2011/11/01*/
#include <stdio.h>
#include <stdlib.h>
#define N 10
void tongji(char string[],char str[][20],int num[]);
int main(int argc, char *argv[])
{
char string[N*20];
char str[N][20];
int num[N]={0};
printf("please input a string:");
gets(string);
printf("%s\n======================================================\n",string);
tongji(string,str,num);
system("PAUSE");
return 0;
}
void tongji(char string[],char str[][20],int num[])
{
char* s_p = string;
char (*s_pp)[20] = str;
char temp[20];
char* p_temp = temp;
int i,len=0;
int* i_temp = num;
for(i=0;string[i]!=0;i++)
string[i]=tolower(string[i]);
while(*s_p!='\0'&&*s_p!='0')
{
p_temp = temp;
while(*s_p!=' '&&*s_p!='\0')
{
*p_temp++=*s_p++;
}
*p_temp='\0';
for(i=0;i<10;i++)
{
if(!strcmp(temp,*(str+i)))
{
num[i]++;
break;
}
}
if(i==10)
{
strcpy(*s_pp,temp);
(*i_temp)+=1;
i_temp++;
s_pp++;
len++;
}
if(*s_p==' ')
s_p++;
}
for(i=0;i<len;i++)
{
printf("%s ",*(str+i));
}
printf("\n");
for(i=0;i<len;i++)
{
printf("%d ",num[i]);
}
printf("\n");
}