扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include stdio.h
创新互联是一家专注于网站设计制作、网站设计与策划设计,北湖网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:北湖等地区。北湖做网站价格咨询:13518219792
#include string.h
#include malloc.h
void niXuArr(char arr[]);
char * niXuPoint(char *p);
int main(void)
{
char arr[] = {"abcdefghigk"}, *p = "you are the first";
printf("逆序前:%s\n逆序后:", arr);
niXuArr(arr);
printf("%s\n", arr);
printf("逆序前:%s\n逆序后:", p);
p = niXuPoint(p);
printf("%s\n", p);
return 0;
}
void niXuArr(char arr[])
{
int i = 0;
char temp = 0;
for(i = 0; i strlen(arr) / 2; i++)
{
temp = arr[i];
arr[i] = arr[strlen(arr) - 1 - i];
arr[strlen(arr) - 1 - i] = temp;
}
}
char * niXuPoint(char *p)
{
char *pHead = NULL, *pTail = NULL, temp = 0;
int i = 0;
pHead = (char*)malloc(strlen(p));
pTail = p + strlen(p) - 1;
p = pHead;
for(i = 0; i strlen(p); i++)
{
*pHead++ = *pTail--;
}
*pHead = '\0';
return p;
}
这个肯定是先学数组了,毕竟是最基本的数据格式,但是要学C语言肯定都会学到的。
给你看一下我的代码
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i++){
printf("请输入第%d个数:",(i+1));
scanf("%d",a[i]);
//保存数组,因为输入完数组要冒泡排序,排序后的元素顺序可能和原数组不一样
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i++){
for(j=0;j9-i;j++){
if(a[j]a[j+1]){ //这里控制的升序还是降序,我这是降序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//查找最大值在原数组的位置
for(i=0;i10;i++){
if(b[i]==a[0]){ //降序的话最大值是a[0],升序的话最大值是a[9]
break; //一旦找到最大值,马上跳出循环
}
}
printf("最大值是%d,它在原数组中是第%d个元素!\n",a[0],(i+1));
}
你的程序:
main()
{
int b[3];
b=pop();
}
int * pop()
{
int a[3],i;//定义的局部变量a[3]在调用完之后自动释放其空间
for(i=0;i3;i++)
a[i]=i;
return a;//返回的是指向数组a[3]的地址而不是数组a[3]本身
}
注:既然上面说到调用的方法返回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被释放了,所以b接收不到数组a[3],故出错。
正确的程序:
#includestdio.h
main()
{
int b[3];
pop(b,3);
}
void pop(int a[],int n)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数组的长度,不需写返回语句return,只需通过指向数组的地址的传入就可以直接将数组b[]的值改变
{
int i;
for(i=0;in;i++)
a[i]=i;
}
#include "stdio.h"
#include "string.h"
#include "windows.h"
#include "conio.h"
void input();
void menu();
struct student
{
int code;
char name[20];
char sex;
int age;
int chinese;
int english;
int computer;
int math;
int total;
int average;
}stud[100];
struct student temp;
void input()
{
int num,i;
printf("请问您要输入几个学生的信息?\n");
scanf("%d",num);
for(i=0;inum;i++)
{
printf("请输入第%d个学生的学号:\n",i+1);
scanf("%d",stud[i].code);
printf("请输入第%d个学生的姓名:\n",i+1);
scanf("%s",stud[i].name);
fflush(stdin);
printf("请输入第%d个学生的性别(F为女,M为男):\n",i+1);
scanf("%c",stud[i].sex);
fflush(stdin);
printf("请输入第%d个学生的年龄:\n",i+1);
scanf("%d",stud[i].age);
printf("请输入第%d个学生的语文成绩:\n",i+1);
scanf("%d",stud[i].chinese);
printf("请输入第%d个学生的英语成绩:\n",i+1);
scanf("%d",stud[i].english);
printf("请输入第%d个学生的计算机成绩:\n",i+1);
scanf("%d",stud[i].computer);
printf("请输入第%d个学生的数学成绩:\n",i+1);
scanf("%d",stud[i].math);
stud[i].total = stud[i].chinese+stud[i].english+stud[i].computer+stud[i].math;
stud[i].average = stud[i].total/4;
}
printf("您已经输入了%d个学生的信息",num);
printf("\n请按任意键返回主菜单!");
fflush(stdin);
getch();
system("cls");
menu();
}
void find()
{
int choice,i,code;
char name[20];
printf("请问您需要按照哪一个方式来查找学员:\n");
printf("查找方式:1.按学号查找。2.按姓名查找。\n");
scanf("%d",choice);
if(choice==1)
{
printf("请输入您要查找的同学的学号:\n");
scanf("%d",code);
for(i=0;i100;i++)
{
if(code == stud[i].code)
{
printf("\n第%d个学生的学号是:%d\n",i+1,stud[i].code);
printf("第%d个学生的姓名是:%s\n",i+1,stud[i].name);
printf("第%d个学生的性别是:%c\n",i+1,stud[i].sex);
printf("第%d个学生的年龄是:%d\n",i+1,stud[i].age);
printf("第%d个学生的语文成绩是:%d\n",i+1,stud[i].chinese);
printf("第%d个学生的英语成绩是:%d\n",i+1,stud[i].english);
printf("第%d个学生的计算机成绩是:%d\n",i+1,stud[i].computer);
printf("第%d个学生的数学成绩是:%d\n",i+1,stud[i].math);
printf("第%d个学生的总成绩是:%d\n",i+1,stud[i].total);
printf("第%d个学生的平均分是:%d\n",i+1,stud[i].average);
printf("══════════════════════════════\n");
}
}
}
else if(choice==2)
{
printf("请输入您要查找的学生的姓名");
fflush(stdin);
gets(name);
for(i=0;i100;i++)
{
if(strcmp(name,stud[i].name)==0)
{
printf("\n第%d个学生的学号是:%d\n",i+1,stud[i].code);
printf("第%d个学生的姓名是:%s\n",i+1,stud[i].name);
printf("第%d个学生的性别是:%c\n",i+1,stud[i].sex);
printf("第%d个学生的年龄是:%d\n",i+1,stud[i].age);
printf("第%d个学生的语文成绩是:%d\n",i+1,stud[i].chinese);
printf("第%d个学生的英语成绩是:%d\n",i+1,stud[i].english);
printf("第%d个学生的计算机成绩是:%d\n",i+1,stud[i].computer);
printf("第%d个学生的数学成绩是:%d\n",i+1,stud[i].math);
printf("第%d个学生的总成绩是:%d\n",i+1,stud[i].total);
printf("第%d个学生的平均分是:%d\n",i+1,stud[i].average);
printf("══════════════════════════════\n");
}
}
}
else
{
printf("请输入1或者2,只能按照姓名或者学号来查找学生信息");
fflush(stdin);
getch();
system("cls");
find();
}
printf("学生相关信息打印完毕");
printf("\n请按任意键返回主菜单!");
fflush(stdin);
getch();
system("cls");
menu();
}
void insert()
{
int i,j=0;
system("cls");
printf("请输入要插入学生的信息:\n");
printf("请输入学生的学号:\n");
scanf("%d",temp.code);
printf("请输入学生的姓名:\n");
scanf("%s",temp.name);
fflush(stdin);
printf("请输入学生的性别(F为女,M为男):\n");
scanf("%c",temp.sex);
fflush(stdin);
printf("请输入学生的年龄:\n");
scanf("%d",temp.age);
printf("请输入学生的语文成绩:\n");
scanf("%d",temp.chinese);
printf("请输入学生的英语成绩:\n");
scanf("%d",temp.english);
printf("请输入学生的计算机成绩:\n");
scanf("%d",temp.computer);
printf("请输入学生的数学成绩:\n");
scanf("%d",temp.math);
temp.total = temp.chinese+temp.english+temp.computer+temp.math;
temp.average = temp.total/4;
for(i=0;i100;i++)
{
if(temp.codestud[i].code)
{
for(j=99;ji;j--)
{
stud[j]=stud[j-1];
}
}
stud[j]=temp;
break;
}
printf("你成功已插入了学生的信息!");
printf("\n请按任意键返回主菜单!");
fflush(stdin);
getch();
system("cls");
menu();
}
void del()
{
int code,i,j;
printf("请输入您要删除的学员的学号:\n");
scanf("%d",code);
for(i=0;i100;i++)
{
if(code==stud[i].code)
{
for(j=i;j100;j++)
{
stud[j]=stud[j+1];
}
}
if(strlen(stud[i].name)0)
{
printf("\n第%d个学生的学号是:%d\n",i+1,stud[i].code);
printf("第%d个学生的姓名是:%s\n",i+1,stud[i].name);
printf("第%d个学生的性别是:%c\n",i+1,stud[i].sex);
printf("第%d个学生的年龄是:%d\n",i+1,stud[i].age);
printf("第%d个学生的语文成绩是:%d\n",i+1,stud[i].chinese);
printf("第%d个学生的英语成绩是:%d\n",i+1,stud[i].english);
printf("第%d个学生的计算机成绩是:%d\n",i+1,stud[i].computer);
printf("第%d个学生的数学成绩是:%d\n",i+1,stud[i].math);
printf("第%d个学生的总成绩是:%d\n",i+1,stud[i].total);
printf("第%d个学生的平均分是:%d\n",i+1,stud[i].average);
printf("══════════════════════════════\n");
}
}
printf("学生相关信息打印完毕");
printf("\n请按任意键返回主菜单!");
fflush(stdin);
getch();
system("cls");
menu();
}
void output()
{
int i;
for(i=0;i100;i++)
{
if(strlen(stud[i].name)0)
{
printf("\n第%d个学生的学号是:%d\n",i+1,stud[i].code);
printf("第%d个学生的姓名是:%s\n",i+1,stud[i].name);
printf("第%d个学生的性别是:%c\n",i+1,stud[i].sex);
printf("第%d个学生的年龄是:%d\n",i+1,stud[i].age);
printf("第%d个学生的语文成绩是:%d\n",i+1,stud[i].chinese);
printf("第%d个学生的英语成绩是:%d\n",i+1,stud[i].english);
printf("第%d个学生的计算机成绩是:%d\n",i+1,stud[i].computer);
printf("第%d个学生的数学成绩是:%d\n",i+1,stud[i].math);
printf("第%d个学生的总成绩是:%d\n",i+1,stud[i].total);
printf("第%d个学生的平均分是:%d\n",i+1,stud[i].average);
printf("══════════════════════════════\n");
}
}
printf("学生相关信息打印完毕");
printf("\n请按任意键返回主菜单!");
fflush(stdin);
getch();
system("cls");
menu();
}
void sort()
{
int i,j;
for(i=0;i100;i++)
{
for(j=i+1;j100;j++)
{
if(strlen(stud[i].name)0 strlen(stud[j].name)0)
{
if(stud[i].averagestud[j].average)
{
temp=stud[i];
stud[i]=stud[j];
stud[j]=temp;
}
}
}
}
printf("学生信息按照平均分降序排序完毕\n");
output();
}
void error()
{
printf("输入错误,请输入(1-7):\n");
printf("按任意键结束。。。。。\n");
fflush(stdin);
getch();
system("cls");
menu();
}
void menu()
{
int choice;
system("cls");
printf("\t\t学生信息管理系统\n");
printf("*************************************************\n");
printf("\t\t【1】输入数据\n");
printf("\t\t【2】查找数据\n");
printf("\t\t【3】插入数据\n");
printf("\t\t【4】删除数据\n");
printf("\t\t【5】输出数据\n");
printf("\t\t【6】排序数据\n");
printf("\t\t【7】退出\n");
printf("*************************************************\n");
printf("请输入您的选择(1-7)\n");
scanf("%d",choice);
switch(choice)
{
case 1:input();break;
case 2:find();break;
case 3:insert();break;
case 4:del();break;
case 5:output();break;
case 6:sort();break;
case 7:exit(0);break;
default:error();break;
}
}
void main()
{
menu();
}
仅供参考
#include stdio.h
#define S 10
#define C 5
int scores[S][C];
void input(void)
{
int i, j;
for(i = 0; i S; i ++)
{
printf("input %d scores of student %d \n", C, i+1);
for(j = 0; j C; j ++)
scanf("%d", scores[i][j]);
}
}
void calc_ave(void)
{
int i, j;
float a;
for(i = 0; i S; i ++)
{
for(a = 0, j = 0; j C; j ++)
a += scores[i][j];
a/=C;
printf("average score of student %d is %.2f\n", i+1, a);
}
}
void output(void)
{
int i, j;
for(i = 0; i S; i ++)
{
printf("%03d ", i+1);
for(j = 0; j C; j ++)
printf("%3d ", scores[i][j]);
printf("\n");
}
}
void find_max(void)
{
int i, j, mi, mj;
for(mi= mj = i = 0; i S; i ++)
for(j = 0; j C; j ++)
if(scores[i][j] scores[mi][mj]) mi = i, mj = j;
printf("the max score is class %d of student %d\n", mj + 1, mi + 1);
}
void find_more_than_90(void)
{
int i, j;
for(i = 0; i S; i ++)
{
for(j = 0; j C; j ++)
if(scores[i][j] =90) break;
if(j == C) printf("student %d has score more than 90 on every class\n", i + 1);
}
}
int main()
{
input();
calc_ave();
output();
find_max();
find_more_than_90();
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流