C语言怎么设计一个函数使输入某个值时强制结束程序??

作者&投稿:壤陶 (若有异议请与网页底部的电邮联系)
一个c语言程序的执行总是从该函数的main开始,在main函数最后结束?~

main()函数称之为主函数,一个C程序总是从main()函数开始执行的,但是不一定在main函数最后结束。
在 main() 之后的最后一条语句结束后,程序还要运行一些代码,以正常返回操作系统。main函数执行完后还执行其他语句,
有时候需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理,方法就是用atexit()函数来注册程序正常终止时要被调用的函数,atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数,它的原型是:
int atexit(void (*)(void));

扩展资料
main函数的使用
示例:
#include
#include
void fn1(void);
void fn2(void);
int main(void)
{
atexit(fn1);
atexit(fn2);
printf("main exit ...
");
return 0;
}
void fn1()
{
printf("calling fn1()...
");
}
void fn2()
{
printf("calling fn2()...
");
}
参考资料来源:百度百科—main函数

可以按照如下步骤:
1 读入字符串,可以使用scanf以%s的方式读入字符串,也可以以gets一次读入整行字符串。
2 判断字符串。使用strcmp函数,与设定的字符串相比较。如输入字符串存在字符数组cmd中,当输入"test"的时候执行程序,那么当strcmp(str, "test")返回值为0时,代表需要执行对应程序。
3 执行程序。
如果要执行的是某一个函数,那么直接在2步中判断成功时调用对应函数即可。
如果要执行的是另外一个可执行文件,可以通过
system(exec_file_name);
的方式,执行可执行文件。其中exec_file_name是存储要执行的可执行文件名及路径的字符串。

1.引入头文件#include "stdafx.h"和#include "stdio.h"。

2.写出主函数void main(){},在函数体内写出如下代码:

 int number = 0;
 while(true)
 {
  printf("请输入数字:
");
  scanf ("%d",&number);
  if (number == 1)
  {
   return;
  }
 }

3.点击红叹号测试。

程序清单:

// 停止循环.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"

void main()
{
 int number = 0;
 while(true)
 {
  printf("请输入数字:
");
  scanf ("%d",&number);
  if (number == 1)
  {
   return;
  }
 }
}



CWnd::OnKeyDownafx_msg void OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );参数: nChar 指定了给定键的虚拟键码。 nRepCnt 重复计数(用户按住键引起的重复击键数目)。 nFlags 指定了扫描码、暂态键码、原来的键状态和上下文代码,如下面的列表所示: 值 描述 0-7 扫描码(依赖于OEM的值) 8 扩展键,比如功能键或数字键盘上的键(如果它是扩展键,则为1) 9-10 未使用 11-12 Windows内部使用 13 上下文代码(如果按下键时ALT键时被按下的,则为1;否则为0) 14 原来的键状态(如果在调用之前键时按下的,则为1;如果键是弹起的,则为0) 15 暂态(如果键正在被释放,则为1;如果键正被按下,则为0) 对于WM_KEYDOWN消息,键暂态位(15位)为0,并且上下文代码位(13位)为0。说明:当用户按下了一个非系统键时,框架调用这个成员函数。非系统键是指当ALT键为被按下时按下的键盘键或者当CWnd拥有输入焦点时按下的键盘键。由于自动重复,在调用OnKeyUp成员函数之前可能会产生多个OnKeyDown调用。指明原来的键状态的位可以被用来确定OnKeyDown调用时是第一次被按下还是重复的按下状态。对于IBM增强101和102键键盘,增强键包括键盘主体部分的右ALT键和右CTRL键;数字键盘左侧的INS,DEL,HOME,END,PAGE UP,PAGE DOWN和箭头键;以及数字键盘上的斜杠(/)和ENTER键。一些其它的键盘可能支持nFlags中的扩展键位。注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。

如果要强制结束程序的话这样:
if(i=='某个值')
return ;
如果只是强退出函数的话这样:
if(i=='某个值')
break;

直接用条件语句最简单!
if(i=“你想结束的值”)
就可以了、具体的题具体来看是不一样的

if(i == 0)
exit(0);

用c语言写一个函数,输入16进制,输出相对应的10进制
答:for (int i = 0; i < n; i++) y += char2int(x[i]) * pow(16.0, n - i - 1); return y;}void main(){ char a[N]; puts("输入一个十六进制数(只能含有0-9,a-f,A-F):"); scanf("%s", a); int b = change(a, strlen(a)); printf("...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
答:函数声明最好放在main前面 scanf("%s",a); //这句改成这样 子函数中的数组a和main函数中的数组a, 并不是同一个数组 include <stdio.h>#include <stdlib.h>#define N 10void fanzhuan(char* a);int main() {int i;char a[N]={'\0'};printf("请输入字符串:");scanf("%s",a)...

C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出...
答:include <stdio.h> void main(){ int a,b,c;printf("请输入3个整数:");scanf("%d%d%d",&a,&b,&c);if((a>b)&& (a<c)|| (ac))printf("\n d 为位于中间的数\n",a);if((b>a)&& (b<c)|| (bc))printf("\n d 为位于中间的数\n",b);if((c>b)&& (c<a)|| ...

C语言 21.写一个函数,其输入参数为一个整数,返回值为该整数的打头数字...
答:可以参考下面的代码:include <stdio.h> include <stdlib.h> int yi(int m){ while(m>=10)m/=10;return m;} int main(){ int a,b;printf("请输入一个整数:");scanf("%d",&a);if(a<0){ b=-yi(-a);} else b=yi(a);printf("该整数以%d打头!\n",b);return 0;} ...

C语言设计一个函数,使其任意输入一个二维数组都可以输出一个4*4的矩 ...
答:include "stdio.h"void d(int a[4][4]){ for(int y=0;y<4;y++){ for(int x=0;x<4;x++){ printf("%d ",a[y][x]);} printf("\n");} } void main(){ int a[4][4]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};d(a); //调用 } ...

用C语言编程:有一个函数:y=5x(x<1),y=3x+1(x≥1);写一程序,输入x值...
答:include <stdio.h>void main(){double x,y;printf("请输入x的值,并按回车结束\n");scanf("%lf",&x);//获取用户输入的数字赋值给xif(x<1)//如果x值小于1{y=5*x;}else//如果x值不小于1y=3*x+1;printf("y的值是:%lf\n",y);} 单独自定义函数可以这样写 include <stdio.h>...

c语言 ,编写一个函数input(),sort(),实现数组的输入,排序。
答:printf("请输入n个数据:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);} void sort(int a[],int n)//选择法排序 {int t,index,k,i;for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++)if(a[index]>a[i])index=i;t=a[index];a[index]=a[k];a[k]=t;}} ...

C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。_百度知...
答:include<stdio.h> include<conio.h> include<string.h> define N 1000 char str[N];int a[N],b[N];int main(void){ void zsh();long ycl();int i,n;do{ printf("请输入一个十六进制数:\n");scanf("%s",str);for(i=0,n=0;str[i]!='\0';i++)if(str[i]<'0'||(str[...

c语言程序设计 设计一个求解一元二次方程的函数,在主函数中输入方程的系...
答:/ 供参考!/ include <stdio.h> include <math.h> void calcu(double a,double b,double c);int main(void){ double a, b, c;char ch;do { printf("请输入一元二次方程的三个系数:\n");printf("a=\t");scanf("%lf", &a);printf("b=\t");scanf("%lf", &b);printf("c=...

C语言 编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
答:这个和返回值没有关系的呀,返回值和参数是两个概念的。参数是调用者传递给被调用者的一些信息,可以是一个或者多个,也可以没有。而返回值是被调用者给调用者的信息,可以是一个,或者没有,不能是多个。void daoxu(char x[],int n),这样子的写法,main函数传递给daoxu函数的是数组a和a的长度...