代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string>
//输入三个整数,从小到大输出
void q8_1(int *a, int *b, int *c) {
if (*a < *b && *a<*c) {
printf("%d ", *a);
if (*b < *c) {
printf("%d ", *b);
printf("%d", *c);
}
else {
printf("%d ", *c);
printf("%d", *b);
}
}
else if (*b < *a&&*b < *c) {
printf("%d ", *b);
if (*a < *c) {
printf("%d ", *a);
printf("%d", *c);
}
else {
printf("%d ", *c);
printf("%d", *a);
}
}
else{
printf("%d ", *c);
if (*a < *b) {
printf("%d ", *a);
printf("%d", *b);
}
else {
printf("%d ", *b);
printf("%d", *a);
}
}
}
//输入3个字符串,按照从小到大输出
void q8_2(char *a, char *b, char *c) {
int i = 0;
if (strcmp(a, b) < 0 && strcmp(a,c)<0) {
printf("%s ", *a);
if (strcmp(b, c) < 0) {
printf("%s ", *b);
printf("%s", *c);
}
else {
printf("%s ", *c);
printf("%s", *b);
}
}
else if (strcmp(a, b) < 0 && strcmp(a, c) > 0) {
printf("%d ", *c);
printf("%d ", *a);
printf("%d", *b);
}
else if (strcmp(a, c) < 0 && strcmp(a, c) > 0) {
printf("%d ", *b);
printf("%d ", *a);
printf("%d", *c);
}
else {
if (strcmp(b, c) < 0) {
printf("%d ", *b);
printf("%d ", *c);
printf("%d", *a);
}
else {
printf("%d ", *c);
printf("%d ", *b);
printf("%d", *a);
}
}
}
//输入一个含有数字和非数字的字符串,统计并输出整数
int getInt(char temp[], int n) {//将字符串转为整数
int sum = 0;
for (int i = 0; i < n; i++) {
printf("%c", temp[i]);
sum += (int)(temp[i]-48) * (pow(10, n - 1 - i));
}
return sum;
}
void q8_16() {
char *str = (char*)malloc(256 * sizeof(char));
char temp[256];
int a[256];
int i = 0,j=0, count=0, sign = 0;//sign 标记一个整数的开始
printf("请输入字符串\n");
fgets(str, 255, stdin);
while (1) {
if (*(str + i) >= 48 && *(str + i) <= 57) {
if (sign == 0) {
count++;
sign = 1;
}
temp[j] = *(str + i);
j++;
}
else {
if (sign == 1) {
sign = 0;
a[count-1] = getInt(temp, j);
j = 0;
}
}
if (*(str + i) == '\n') {
break;
}
i++;
}
printf("共有%d个整数\n", count);
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
}
//用指向指针的方法对五个字符串排序
//其实就是使用指针数组
void q8_20() {
char *str[5];//指针数组,数组内存放每个字符串的指针
char **q, **p , *temp;
int i;
for (i = 0; i < 5; i++)
str[i] = (char *)malloc(256*sizeof(char));
printf("请依次输入五个字符串:\n");
for (i = 0; i < 5; i++)
fgets(str[i], 255, stdin);
for (q = str; q < str + 4; q++)
{
for (p = q + 1; p < str + 5; p++)
{
if (strcmp(*q, *p) > 0)
{
temp = *q;
*q = *p;
*p = temp;
}
}
}
printf("排序后输出为:\n");
for (i = 0; i < 5; i++)
{
printf("%s", str[i]);
}
}
int main() {
//int a, b, c;
//scanf_s("%d,%d,%d", &a, &b, &c);
//printf("\n");
//int *m = &a, *n = &b, *q = &c;
//q8_1(m, n, q);
//char str1[20], str2[20], str3[20];
char* str1 = (char*)malloc(15 * sizeof(char));
//scanf_s("%s", str1);
//scanf_s("%s", str1);
//scanf_s("%s", str1);
//printf("\n");
//char *a = str1;
//char *b = str1;
//char *c = str1;
//q8_2(a, b, c);
//q8_16();
q8_20();
system("pause");
return 0;
}
运行:
8.16
8.20