c语言编程:要求从键盘输入一批整数(不超过100个),对其从大到小排序,然后将它们输出
//#include "stdafx.h"//vc++6.0加上这一行.#include "stdio.h"int main(void){ int i,j,k,a[100]; printf("Input 100 integers...
"); for(i=0;i<100;scanf("%d",a+i++)); for(i=0;i<99;i++){ for(k=i,j=k+1;j<100;j++) if(a[k]<a[j]) k=j; if(k!=i){ j=a[k]; a[k]=a[i]; a[i]=j; } } for(i=0;i<100;printf("%d ",a[i++])); return 0;}
1、数组形式。
解题思路: 判断比较的躺数,每趟相邻的两个数再进行比较,应用两次 for 循环
具体代码:
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - i - 1; j++)//用for循环的元素个数控住多少趟
{
if (arr[j] > arr[j + 1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
2、指针形式。
创建两个变量start、end,记住数组起始与结束位置元素的地址,应用两次 while 循环交换地址
指针冒泡排序 :
void PrintArr(int* arr, int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", *(arr + i));
}
return 0;
}
void BubbleSort(int *arr, int sz)
{
int start = arr;
int end = arr + sz - 1;
//趟数
while (start < end)
{
int *cur = start;
while (cur < end)
{
if (*cur > *(cur+1))
{
int tmp = *cur;
*cur = *(cur + 1);
*(cur + 1) = tmp;
}
cur++;
}
end--;
}
}
int main()
{
int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
BubbleSort(arr, sz);
PrintArr(arr, sz);
system("pause");
return 0;
}
扩展资料:算法原理
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#include <stdio.h>
int main()
{int a[100],n,i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("
");
return 0;
}
c语言编程 实现从键盘输入数据,要求输入大于0的数字,如果输入的是小于0...
include <stdio.h> int main() { unsigned num = 0;char ch;do { ch = (char)fgetc(stdin);if((ch >= '0') && (ch <= '9')) num = 10 * num + (ch - '0');}while(ch != '\\n');printf("num = %u\\n\\n",num);return 0;} ...
c语言编程,假设x是一个整数,写一个程序:从键盘上输入它的值,计算y=2x...
include "stdio.h"int main(){ int x,y; scanf("%d",&x); y=2*x+5; printf("%d",y);}
c语言编程:从键盘输入公里数,其屏幕输出对应的英里数。已知1英里=1.6093...
include <stdio.h> const double mile = 1.60934;int main(){ float fkms = 0.0f;printf("Input the kilometres: \\n");scanf("%f", &fkms);printf("The miles is %f\\n", fkms\/mile);return 0;}
C语言编程:从键盘输入两个正整数a和b,求a和b的最小公倍数,咋做?_百度...
代码文本:include "stdio.h"int mylcm(int a,int b){\/\/求LCM函数 int t;if(a0,b>0)...\\n");if(scanf("%d%d",&a,&b)==2 && a>0 && b>0)printf("The LCM is %d\\n",mylcm(a,b));else\/\/提示输入错误并退出 printf("Input error, exit...\\n");return 0;} 比较简单...
C语言编程:从键盘输入一个有空格的字符串,删除所有重复字符,按字符升 ...
代码文本:include "stdio.h"int main(int argc,char *argv[]){ char a[101],*p,*px,t;printf("Input a string...\\n");for(p=a,t=0;t<100;t++)\/\/输入字符串 if((*(p+t)=getchar())=='\\n')break;(p+t)='\\0';for(p=a;*p;p++)\/\/排序 for(px=p+1;*px;px++)if...
c语言题目 编程计算s=n! n从键盘上输入
include <iostream>using namespace std;__int64 fac(int n) { if (n==1 || n==0) return 1; return n*fac(n-1);}int main() { int n; cout << "input n:"; cin >> n; cout << n << "! = " << fac(n) << endl; return 0;} ...
C语言:从键盘输入一个不超过100个字符的字符串,其中字符串只包括字母...
1、首先需要打开编程软件。2、输入以下程序:#include <stdio.h>int main(){ char str[40]; scanf("%s",&str); printf("%s",str); return 0;}。3、然后按F5运行程序。4、然后输入想要输入的字符串。5、按回车键,就会弹出你输入的字符串。6、注意字符串的大小,改变中括号中的数字改变输入...
c语言:从键盘任意输入一个整数n,编程计算并输出1-n之间的所有素数之和...
include<stdio.h> include<math.h> int prime(int x){ int i;for(i=2;i<=(int)sqrt(x);i++)if(x%i==0)return 0;return 1;} void main(){ int n,i,j,sum=2;printf("n=\\n");scanf("%d",&n);printf("小于等于%d的素数\\n",n);if(n>2){ printf("%4d",2);j++;} f...
C++编程:从键盘输入10个整数,存储到一个一维整型数组中,编一个函数将...
\/ sort.cpp \/ include<iostream> include<iomanip> using namespace std;int temp[10]; \/\/ 用于归并排序,避免重复分配内存 void sort1(int * const list, const int size ); \/\/ 冒泡排序 void sort2(int * const list, int left, int right); \/\/ 归并排序 void merge(int * const...
编程实现:从键盘输入10个学生的成绩,统计并输出80分以上学生的人数。要...
如图 这样的程序可以吗?追问可以获得源代码!改进!加上不及格和平均分统计!而且还能防止非法输入!源码如下:(C语言版,C++可以兼容)\/\/编程实现:从键盘输入10个学生的成绩,统计并输出80分以上学生的人数。\/\/要求:①定义并使用自定义函数int fun(float arr[],int n)实现统计80分以上人数的功能...
粱希达爽: #include <stdio.h> int main (void) { int n = 0; int num = 0; char ch; printf ("End to input \'a\'.\n"); printf ("Please input number :\n"); do { while ((scanf ("%d", &num)) == 1) { if (num <= 100) n++; } ch = getchar(); }while (ch != 'a'); printf ("%d \n", n); putchar (10); return 0; }满意请采纳
禹会区18210271668: C语言程序设计,要求通过键盘输入3个任意的整数,输出其中最大的数 - ?
粱希达爽:[答案] #include int main() { int a, b, c,max; scanf("%d%d%d",&a,&b,&c); max = a; if(b > a) max = b; if(c > a) max = c; printf("max = %d\n",max); return 0; }
禹会区18210271668: C语言用数组从键盘输入一批不超过一百个的互不相同且大于零的整数,输出最大最小值及其下标. - ?
粱希达爽: include "stdio.h" void main() {int i,a,max,min;scanf("%d",&a);max=min=a;while(scanf("%d",&a) != EOF){if(a>max)max=a;if(a<min)min=a;}printf("max=%d min=%d\n",max,min); }
禹会区18210271668: 编写一个C程序,要求从键盘输入三个整数a,b,c,输出其中最大的数.#includevoid main(){\x09int a,b,c,max;\x09printf("请输入3个整数\n");\x09scanf("%d,... - ?
粱希达爽:[答案] 怎么个不对法?逻辑很正确,表达也严谨.有什么不对的现象说出来!
禹会区18210271668: 求一c语言程序:从键盘上输入若干整数,输入0时结束.?
粱希达爽: #include "stdio.h" void main() { int a[100],i=0; printf("从键盘上输入若干个整数,当输入0时结束\n"); while(a[i]!=0) { scanf("%d",a[i]); } for(i=0;i<100;i++) { printf("%d ",a[i]); } }
禹会区18210271668: C语言:编写程序,要求用户录入一串整数 - ?
粱希达爽: #include<stdio.h> int num[1000]; void sort(int n) { int i,po,max = -0xfff,t; for(i = 0; i < n; ++i) { if(num[i] > max) { max = num[i]; po = i; } } t = num[n]; num[n] = num[po]; num[po] = t; if(n - 1) sort(n - 1); } int main() { int n,i; scanf("%d",&n); for(i = 0; i < n; ++i) { scanf("%d",&num[i]); } sort(n); }
禹会区18210271668: 一道C的编程题拜托大家从键盘上输入10个整数,并将其存放在一数组 ?
粱希达爽: int a,i; char str[];int sum=0;float ave; gets(str);i=strlen(str); for(a=0;a0&&str[a]%2==0) { sum+=str[a];i++;} ave=(float)sum/i; printf("%f",ave);} 如果你是大二的学生,要开始自己写了.
禹会区18210271668: .编写一个c程序,从键盘任意输入8个整数 - ?
粱希达爽: #include<stdio.h> int main() { int arr[8],i,sum=0;printf(“please input 8 numbers”); for(i=0;i < 8;i++) { scanf(“%d”,&arr[i]); } for(i=0;i < 8;i++) { sum=sum+arr[i]; } return 0; }
禹会区18210271668: C语言编程实现:从键盘中输入任意一个多位的整数(位数不确定),将其每一位之间都用$分隔符分割之后... - ?
粱希达爽: #include<stdio.h> void print(int a) { if(a<10) printf("%d",a); else { print(a/10); printf("$%d",a%10); } } void main() { int a; printf("请输入:"); scanf("%d",&a); print(a); }
禹会区18210271668: c语言编程中:从键盘输入10个整数,然后根据提示选择输入A或者D - ?
粱希达爽: 你是要实现什么功能? 在VC中编程可以用scanf();读取键盘数据,也可用getchar();获取输入的一个字符.如: int a[10],i; for(i=0;i{ scanf(a[i],%d);} 不知道这样用数组行不,不行就直接用最笨的方法 int a0,a1,a2,a3,a4,a5,a6,a7,a8,a9; ...