设计一个C语言程序,至少包括1个循环结构、1个选择结构和1个含有参数的用户自定义函数,包涵流程图,解决有创意的实际应用问题,可以简单一点。
这,你没有给明确的项目,只看你的要求的话,会有很多的方法,就是一个自定义函数,指针传参,然后switch函数作为选择机构,就这么简单。你可以按照这个思路去捋捋
#include<stdio.h>
#include<conio.h>//getch的头文件
#include<stdlib.h>//system的头文件
#include<string.h>
//定义一个学生
typedef struct TagStudent
{
int Num;//学号
char Name[20];//姓名
float Ascore;//平时成绩
float Hscore;//作业成绩
float Tscore;//考试成绩
float total;//总成绩
struct TagStudent *next;//next指针变量 ,指向结构体变量
}Student;
Student *head=NULL;
void Menu();
void InputStudent();
int main()
{
Menu();
while(1)
{
// 读取一个字符
char ch=getch();
//打印菜单
if (ch!= '2')
{
system("cls");
Menu();
}
switch(ch)
{
case '1'://录入学生信息
InputStudent();
break;
case '0'://退出系统
printf("欢迎下次使用.");
return 0;
break;
}
}
return 0;
}
void Menu()
{
printf("========欢迎使用学生成绩管理系统=======\n");//\t表示制表符
printf("***************************************\n");
printf("*\t 请选择功能列表 *\n");
printf("***************************************\n");
printf("*\t 1.录入并保存学生信息 *\n");
printf("*\t 0.退出系统 *\n");
printf("***************************************\n");
}
void InputStudent()
{
Student* p=head;//当前节点
//找到尾节点
while(head!=NULL&&p->next!=NULL)
{
p=p->next;
}
//定一个新节点
Student *NewNode=(Student*)malloc(sizeof(Student));
NewNode->next=NULL;
if(head==NULL)
{
head=NewNode;
}
else{
p->next=NewNode;
}
printf("\n请输入学生信息\n ");
//输入新的学元数据
printf(" 学号:");
scanf("%d", &NewNode->Num);
printf(" 姓名:");
scanf("%s", NewNode->Name);
printf(" 平时成绩:");
scanf("%f", &NewNode->Ascore);
printf(" 作业成绩:");
scanf("%f", &NewNode->Hscore);
printf(" 考试成绩:");
scanf("%f", &NewNode->Tscore);
FILE *fp=fopen("E:\\student.txt","a");
if(fp==NULL)
{
printf("打开文件失败\n");
return ;
}
//写入数据
while(p!=NULL)
{
fprintf(fp,"%d %s %.2f %.2f %.2f\n",p->Num,
p->Name,
p->Ascore,
p->Hscore,
p->Tscore);
p=p->next;
}
fclose(fp);
printf("学生信息录取并保存成功!\n");
}
该程序用于删除字符串中非字母字符
#include <stdio.h>
#include <string.h>
void del(char s[])
{
int len = strlen(s);
int i,j,count=0;
for (i = 0; i < len-count; i++)
{
if (s[i] < 'A' || s[i]>'z' || (s[i] > 'Z' && s[i] < 'a'))
{
for (j = i; j < len-count; j++)
s[j] = s[j + 1];
count++;
i--;
}
}
s[len - count] = '\0';
}
int main()
{
char s[100]= {'\0'};
int n;
printf("请输入字符串数量:");
scanf_s("%d", &n); //输入字符串个数
getchar();
for (int i = 0; i < n; i++) //依次输入n个字符串
{
printf("请输入第%d个字符串:", i + 1);
gets(s);
del(s); //删除字符串中非字母字符
puts(s); //输出字符串
}
return 0;
}
输入输出:
流程图:
//冒泡排序函数
void bubbleSort(int * arr, int len) //int * arr 也可以写为int arr[]
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//打印数组函数
void printArray(int arr[], int len)
{
for (int i = 0; i < len; i++)
{
cout << arr[i] << endl;
}
}
int main() {
bubbleSort(arr, len);
printArray(arr, len);
system("pause");
return 0;
}
这不自己写?