算法技巧1:scanf输入字符串的问题

scanf本来无法输入字符串,但是可以使用其他的办法来让他输入字符串。

#include<stdio.h>
int main()
{
 char a[20];
 scanf("%[^\n]",a);
 puts(a);
 return 0; 
}

这个条件在C++下成立,我又在c下试了一下依旧成立。

这里的%[^\n]的意思可以理解为,遇到\n就会跳出,且不在执行。而普通的scanf其实就是类似%[^ ](这个里面是空格)。

好吧,其实直接使用scanf("%s",a);即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
武汉理工java实验2,大家课学习参考package sun; import java.awt.*; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.StringTokenizer; //导入 public class Test1 extends JFrame {//继承JFrame private final JPanel contentPane;//私有类,其他类不能享用 private final JTextPane numberField;//容器类 private final JTextField sumyun;//创建对象 private final JTextField aveField; public static void main(final String[] args) {//主函数 EventQueue.invokeLater(new Runnable() {//使事件派发线程上的可运行对象排队。当可运行对象排在事件派发队列的队首时,就调用其run方法 public void run() { try { final Test1 frame = new Test1();//捕获异常 frame.setVisible(true); } catch (final Exception e) { e.printStackTrace();//在命令行打印异常信息在程序中出错的位置及原因 } } }); } public Test1() { super("第二次实验:和与平均值"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用 System exit 方法退出应用程序。仅在应用程序中使用。 setBounds(100, 100, 400, 300);//setBounds(x,y,width,height):x:组件在容器X轴上的起点;y:组件在容器Y轴上的起点;width:组件的长度;height:组件的高度。 contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(10, 10, 10, 10)); setContentPane(contentPane);//给窗体加个panel作为内容面板 contentPane.setLayout(null); numberField = new JTextPane(); numberField.addKeyListener(new KeyAdapter() {//键盘事件监听者 public void keyTyped(final KeyEvent e) { double sum = 0,avg = 0; switch(e.getKeyChar()) { case KeyEvent.VK_SPACE: //分隔符为空格 case KeyEvent.VK_COMMA: //分隔符为英文逗号 case KeyEvent.VK_ENTER: //分隔符为回车 final String str=numberField.getText(); final StringTokenizer analyze = new StringTokenizer(str," ,\n");//StringTokenizer 用来分割字符串,用,/n分割 final int allnum=analyze.countTokens(); for(int i =0;i<allnum;i++) { final String temp = analyze.nextToken(); //nextToken() 用于返回下一个匹配的字段 sum = sum+Double.parseDouble(temp); } if(allnum>0) { avg = sum/allnum; }else { avg = 0; } sumyun.setText(Double.toString(sum)); aveField.setText(Double.toString(avg)); } } }); /*numberField.setBounds(15, 15, 350, 100); contentPane.add(numberField); final JLabel label = new JLabel("和 值"); label.setBounds(60, 140, 70, 20); contentPane.add(label); final JLabel label_1 = new JLabel("平均值"); label_1.setBounds(60, 180, 70, 20); contentPane.add(label_1);*/ sumyun = new JTextField(); sumyun.setBounds(130, 140, 230, 25); contentPane.add(sumyun); sumyun.setColumns(10); aveField = new JTextField(); aveField.setBounds(130, 180, 230, 25); contentPane.add(aveField); aveField.setColumns(10); } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值